SMALL
파이썬에서 우선순위 큐는 queue 모듈의 PriorityQueue 와 heapq 모듈을 이용해 구현할 수 있다.
내부적으로는 PriorityQueue가 heapq 모듈을 그대로 사용한다는 점에서 비슷하지만,
PriorityQueue는 스레드세이프(thread-safe)한 클래스라는 차이점이 있다.
즉, heapq는 스레드세이프를 보장하지 않는다.
* 스레드세이프(thread-safe) : 멀티 스레딩에 안전한 프로그래밍 개념. 내부적으로 lock을 적용하기 때문에 locking overhead가 발생한다.
파이선의 GIL 특성으로 인해 멀티 스레딩이 거의 의미가 없다. 대부분 멀티 프로세싱으로 활용한다는 점을 생각하면 멀티 스레딩을 지원하는 스레드세이프는 의미가 없다.
* 전역 인터프리터 락(Global Interpreter Lock, GIL) : 파이썬 개발 초기에 번거로운 동시성 관리를 편하게 하고 스레드 세이프하지 않은 CPython의 메모리 관리를 쉽게 하기 위해 GIL로 파이썬 객체에 대한 접근을 제한하도록 설계했다. 이것은 하나의 스레드가 자원을 독점하는 형태로 실행된다.
'Language > Python' 카테고리의 다른 글
| 7. 파이썬 math 라이브러리 (0) | 2021.08.12 |
|---|---|
| 6. 파이썬 input 읽기 - 백준 사이트에서 필수 사용! (0) | 2021.08.11 |
| 4. 딕셔너리 key에 value추가하기 (0) | 2021.08.05 |
| 3. 파이썬 Deque 데크 자료형 (0) | 2021.07.27 |
| 2. 파이썬 딕셔너리 모듈 defaultdict, Counter (0) | 2021.07.22 |
댓글