본문 바로가기
언어 정리/python_lib,일급함수

큐_queue_정리_간단

by 알 수 없는 사용자 2022. 5. 10.

참고

https://runebook.dev/ko/docs/python/library/queue

 

https://docs.python.org/ko/3.7/library/queue.html

 


개념 ( 언제쓸지 )

  • 큐(queue)는 컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO (First In First Out)구조로 저장하는 형식을 말한다. 

언제 써먹을까?

queue 모듈 구현 멀티 프로듀서, 다중 소비자 큐. 정보가 여러 스레드간에 안전하게 교환되어야하는 경우 스레드 프로그래밍에 특히 유용

 

 

 


Queue 관련 함수 정리

 

Queue.empty()

큐가 비어 있으면 True를, 그렇지 않으면 False를 반환합니다. empty()가 True를 반환하면, put()에 대한 후속 호출이 블록 되지 않는다고 보장하는 것은 아닙니다. 마찬가지로 empty()가 False를 반환하면, get()에 대한 후속 호출이 블록 되지 않는다고 보장하는 것은 아닙니다.

 

 

Queue.get_nowait()

get(False)와 동등합니다.

 

Queue.get(block=True, timeout=None)

큐에서 항목을 제거하고 반환합니다. 선택적 인자 block이 참이고 timeout이 None(기본값)이면, 항목이 사용 가능할 때까지 필요하면 블록합니다. timeout이 양수면, 최대 timeout 초 동안 블록하고 그 시간 내에 사용 가능한 항목이 없으면 Empty 예외가 발생합니다. 그렇지 않으면 (block이 거짓), 즉시 사용할 수 있는 항목이 있으면 반환하고, 그렇지 않으면 Empty 예외를 발생시킵니다 (이때 timeout은 무시됩니다).

POSIX 시스템에서 3.0 이전에서, 윈도우의 모든 버전에서, block이 참이고 timeout이 None이면, 이 연산은 하부 록에 대한 중단되지 않는(uninterruptible) 대기로 들어갑니다. 이는 어떤 예외도 발생할 수 없음을 뜻하고, 특히 SIGINT가 KeyboardInterrupt를 일으키지 않습니다.

 

 

 

Queue.put_nowait(item)

put(item, False)와 동등합니다.

 

Queue.put(item, block=True, timeout=None)

큐에 item을 넣습니다. 선택적 인자 block이 참이고 timeout이 None(기본값)이면, 사용 가능한 슬롯이 확보될 때까지 필요하면 블록합니다. timeout이 양수면, 최대 timeout 초 동안 블록하고 그 시간 내에 사용 가능한 슬롯이 없으면 Full 예외가 발생합니다. 그렇지 않으면 (block이 거짓), 빈 슬롯이 즉시 사용할 수 있으면 큐에 항목을 넣고, 그렇지 않으면 Full 예외를 발생시킵니다 (이때 timeout은 무시됩니다).

 

 

'언어 정리 > python_lib,일급함수' 카테고리의 다른 글

3_yield기반의 coroutine 코루틴  (0) 2022.06.14
2_generator  (0) 2022.06.13
1_iterator  (0) 2022.06.12
tts_lib 정리  (0) 2022.05.16
queue_error 는 python3.x 2.x 버전 따라 다름  (0) 2022.05.09

댓글