[Python] 파이썬 개발자 면접 질문
Language/Python2024. 5. 26. 18:04[Python] 파이썬 개발자 면접 질문

파이썬 자료구조 특징특징ListDictionarySetTuple순서 유지OPython 3.7 부터 OXO인덱싱OXXO변경 가능성OOOX중복 허용O키는 중복 불가, 값은 가능XO데이터순차 데이터 키-값 쌍 데이터 고유한 요소 집합불변 데이터  GIL(Global Interpreter Lock)Python 매커니즘으로 여러 스레드가 동시에 실행되는 것을 방지 → 한 번의 하나의 스레드만 실행됨목적메모리 관리 - 참조 카운트를 통해 가비지 컬렉터를 작동하는 데, 이 부분이 race condition에 취약함, 이를 해결간소화 - 다중 스레드 환경에서 데이터 무결성을 유지장점GIL로 다중 스레드 환경의 복잡한 문제를 쉽게 해결 → 그냥 스레드를 잠궈버림메모리 관리 문제를 해결하여 데이터 무결성 유지단점병렬성 제..

[Python] GIL이란? 파이썬에서의 멀티쓰레드
Language/Python2024. 5. 6. 17:38[Python] GIL이란? 파이썬에서의 멀티쓰레드

파이썬 GIL이란?파이썬은 다른 언어 (C++ or Java)의 멀티쓰레드와 다른 점이 있다. 멀티 쓰레드가 멀티 쓰레드가 아니다 무슨 말이냐 하면 동시성을 만족하지 못한다.위의 그림처럼 쓰레드를 3개로 나누어 실행하더라도 GIL를 가진 쓰레드만 실행되고, 나머지 쓰레드는 GIL release 되기를 기다린다.동시성을 갖기 위해서는 멀티 프로세싱을 활용해야 한다. 다만 멀티 프로세스는 멀티 쓰레드에 비해 오버헤드나 데이터 교환 어려움 등의 단점이 있다. 멀티 쓰레드의 사용사실상 CPU 코어나 쓰레드를 못굴리는데, 멀티쓰레드를 언제 사용하냐I/O Bound를 해결할 때 사용한다. DB, API, UI 등의 작업들은 CPU 작업 속도에 비해 현저히 느리기에 CPU 입장에서는 I/O 요소들로 인해 작업 손실을..

[Python] Pandas, Numpy 성능 향상 (feat.Pandas vs Numpy)
Language/Python2024. 5. 6. 16:31[Python] Pandas, Numpy 성능 향상 (feat.Pandas vs Numpy)

회사에서 Pandas와 Numpy 를 통해 대용량 로그 파일을 처리하는 데, 비이상적으로 긴 응답 시간을 해결한 내용을 기술한다.선 3줄 요약Pandas 인덱스 접근 함수는 at이 가장 빠르다Pandas의 DataFrame 각 cell별 업데이트가 아닌 Numpy의 array로 행을 만들어 교체가 더 빠르다.Pandas의 DataFrame → Numpy의 ndarray 대체가 더 빠를 수 있다.  Pandas vs Numpy 보통 파이썬에서 행렬 데이터를 처리하면 Pandas가 가장 먼저 검색되고 예시가 많다.하지만 읽기/쓰기 작업이 빈번하다면 Pandas의 DataFrame 보단 Numpy의 ndarry가 성능면에서 더 좋다.https://www.geeksforgeeks.org/difference-b..

Python 3.11 달라진 점 - 업데이트
Language/Python2024. 1. 15. 23:01Python 3.11 달라진 점 - 업데이트

속도문서에 따르면 3.10에 비해 10% ~ 60% 빨라졌다. 즉 1.25 배 빨라졌다  예외 처리 새 구문 (except*) 예외문에 대한 그룹을 설정할 수 있고, 한번에 여러 예외를 받을 수 있다.또한 출력문을 예쁘게 그려준다def f(): raise ExceptionGroup( "group1", [ OSError(1), SystemError(2), ExceptionGroup( "group2", [ OSError(3), RecursionError(4) ] ..

sort, sorted ( Tim sort, 팀 소트)
Language/Python2022. 10. 23. 20:01sort, sorted ( Tim sort, 팀 소트)

하반기 공채를 준비하면서 파이썬 내장 모듈을 유용하게 쓰다보니 내부 구조나 알고리즘을 뭘로 썼지? 혹시.. 내부 구조/알고리즘이 별로라서 메모리/시간 초과가 뜨지 않았나 하는 탓 할겸 간만에 CS 공부 워밍업 겸 영어 문서 읽을 겸 🧑🏻‍💻 가장 익숙한 sort() sorted() 부터 파보자 Sort() vs Sorted() sort 함수는 List.sort(*, key=None, reverse=False) 형식으로 "리스트형의 메소드"​​으로 리스트_객체 값을 직접 수정한다. sorted 함수는 sorted(iterable, /, *, key=None, reverse=False) 형식으로 "파이썬 기본 내장 함수"으로 원본 값은 그대로이고 정렬 값을 반환한다. 기존에 사용할 땐, 그저 원본 데이터가 ..

image