일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Word Cloud
- Firefox
- git
- Python
- 브랜디
- github
- 프로그래머스 월간 코드 챌린지 시즌1
- 디자인 패턴
- FastAPI
- 프로그래머스 월간 코드 챌린지
- 프로그래머스 코딩 테스트 연습
- 바이오데이터 엔지니어
- Spring Boot
- heroku
- Codeforces
- c#
- PostgreSQL 설치 시 에러
- WPF
- 프로그래머스 코딩테스트 연습
- 파이썬
- github actions
- terraform
- pycharm
- 프로그래머스 코딩테스트 연습문제
- 스코페2021
- 애드센스
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- selenium
- PostgreSQL
- 클린 코드
Archives
- Today
- Total
프로그래밍 연습하기
파이썬 PriorityQueue(우선순위 큐) 본문
반응형
docs.python.org/3/library/queue.html
파이썬 PriorityQueue(우선순위 큐)를 사용해보면서 알게된 것을 정리해보려고 합니다.
우선순위 큐를 구성하고 나서,
내용을 확인하고 싶을 때가 있습니다.
그래서 이런식으로 확인 해봅니다.
>>> p_q = queue.PriorityQueue()
>>> p_q
<queue.PriorityQueue object at 0x03A2B8B0>
>>> print(p_q)
<queue.PriorityQueue object at 0x03A2B8B0>
>>> list(p_q)
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
list(p_q)
TypeError: 'PriorityQueue' object is not iterable
하지만 메모리 주소값이 나오고 iterable 하지 않아서 list로 만들어 볼 수도 없습니다.
이때 인스턴스 변수 queue를 사용해서 내부를 확인할 수 있습니다.
>>> p_q = queue.PriorityQueue()
>>> p_q.put(1)
>>> p_q.put(2)
>>> p_q.put(3)
>>> p_q.queue
[1, 2, 3]
이 queue는 내부적으로 heapq 모듈을 사용하여 구현한 것이기 때문에
자세하게 알고 싶으시다면 heapq 모듈 관련한 문서를 찾아보시면 도움이 될 것 같습니다.
그리고 비어있는 PriorityQueue에 get()을 했을 때, 계속 대기하게 됩니다.
대기하지 않으려면 get_nowait()을 사용해야 합니다.
아니면 get()을 사용하기 전에 비어있는지 검사를 하여
비어있지 않을 때만 get()을 사용할 수도 있을 것 같습니다.
PriorityQueue는 비어있을 때도 True이기 때문에
비어있는 것을 확인하기 위해서는
if queue: #비어 있어도 True
if queue.empty(): #비어 있을 때만 True
이렇게 empty()를 통해 확인해주어야 합니다.
PriorityQueue 뿐만 아니고 queue 라이브러리에도 해당되는 내용들입니다.
우선순위 큐는 우선순위를 구현하기 위해 heapq를 사용했지만
기본 Queue는 deque를 사용하는 등의 차이점이 있습니다.
github.com/python/cpython/blob/3.9/Lib/queue.py
여기에서 직접 구현을 확인해보실 수도 있습니다.
반응형
'Python' 카테고리의 다른 글
Openpyxl 하이퍼링크 넣기 (0) | 2020.09.29 |
---|---|
파이썬 데코레이터를 이용한 실행 시간 측정 (0) | 2020.09.17 |
초(Second)를 날짜(Date)로 바꾸기 (0) | 2020.07.31 |
워드 클라우드 프로젝트 (0) | 2020.07.21 |
고성능 파이썬(High Performance Python)을 읽고 (0) | 2019.11.18 |
Comments