게시글
- 파이썬 기초 - 멀티 프로세싱 멀티프로세싱 vs 멀티스레딩멀티스레딩은 하나의 프로세스 내에서 여러 실행 흐름을 만드는 방식으로, I/O-bound 작업(예: 파일 읽기, 웹 요청 등)에 적합하다. 하지만 Python은 GIL(Global Interpreter Lock)이라는 내부 구조 때문에, 동시에 여러 스레드가 CPU를 점유할 수 없다. 그래서 멀티스레딩으로 CPU-bound 작업(예: 수치 연산, 이미지 처리)을 처리하면 병렬화 효과가 거의 없다.반면, 멀티프로세싱은 프로세스를 여러 개 생성하여 병렬로 실행하기 때문에, GIL의 영향을 받지 않으며 CPU를 효율적으로 활용할 수 있다. 각각의 프로세스는 독립적인 Python 인터프리터와 메모리 공간을 가지므로, 완전한 병렬처리가 가능하다.멀티스레딩 vs 멀티프로세싱 시간 비교im.. 2025.03.25
- 파이썬 기초 - 멀티 스레드 스레드스레드는 하나의 프로그램(프로세스) 안에서 실행되는 작업의 흐름 단위이다. 스레드는 같은 메모리 공간을 공유한다. CPU-bound vs I/O-bound작업 종류예시특징멀티스레드 적합성CPU-bound수학 계산, 이미지 필터링CPU 연산 중심GIL 때문에 효과 적음I/O-bound파일 읽기, 웹 요청, DB 쿼리기다림 중심멀티쓰레딩 효과 큼I/O-bound에서 멀티쓰레딩이 유리한 이유Python은 GIL(Global Interpreter Lock) 때문에 한 번에 하나의 스레드만 실행됨하지만 I/O 작업 중엔 CPU를 기다림 상태로 놔두기 때문에, 다른 스레드가 실행 가능GIL의 제약이 있어도 I/O 작업에선 병렬성 효과가 나타남기본 스레드 생성 예제import threadingimport tim.. 2025.03.25
- 파이썬 기초 - 유용한 자료구조 - collections와 enum Collections 모듈의 확장 자료구조defaultdict - 기본값이 있는 딕셔너리존재하지 않는 키에 접근할 때 KeyError를 발생시키는 대신, 자동으로 지정한 기본값으로 초기화해주는 딕셔너리이다.데이터 그룹화나 개수 세기 같은 작업에서 조건문 없이 간결한 코드를 작성할 수 있고, 중첩 딕셔너리를 생성할 때 유용하게 사용할 수 있다.기본 사용법from collections import defaultdictintdd = defaultdict(int) # 0으로 초기화listdd = defaultdict(list) # []로 초기화setdd = defaultdict(set) # {}로 초기화intdd["key"]listdd["key"]setdd["key"]print(intdd) # defaultdi.. 2025.03.23
반응형