본문 바로가기
프로그래밍

python, 리스트를 사용한 FIFO구조의 큐 운용

by 청청개구리 2024. 12. 29.
728x90

리스트 사용해서 작업을 하다가 큐가 필요해져서 만들게 되었음.

 

리스트를 사용해서 만들었고, 리스트의 연산기능을 사용했음

1행 :  큐로 사용할 리스트 이름

3행 : 데이터를 큐에 넣는 기능

9행: 큐에서 데이터를 하나 빼내오는 기능

하지만,,, q_pop() 에 부족한 부분이 있으니, q_list멤버가 없다면 12행은 에러가 발생한다(아래 그림참고)

 

16,17행 :  데이터를 넣고

20행 : 마지막 데이터까지 꺼내지고, 큐는 빈상태가 된다

21행: 비어있는 큐에서 데이터 꺼내기 시도 <- 에러

728x90

 

 

 


이를 보완하기 위해서 len()사용해서 큐의 데이터 갯수를 확인한다

11행 : 큐의 데이터 갯수 확인

12행 : 데이터를 꺼내기 시도

13행 : 성공한다면 큐에서 데이터를 하나 삭제하고

15행 : 큐의 데이터가 없다면 비어 있는 값으로 리턴 준비

 

수행결과, 아래와 같다.

24행 : 큐가 빈 상태에서 데이터 꺼내기 시도

           에러가 나지 않고 에러메세지를 돌려받는다    

환형큐같은 것에 사용되는 head, tail등을 고려하지 않고 파이썬의 리스트로 간단히 구현가능함 확인

.


 

역시나,,, 훌륭하신 분들이 준비해둔 queue라는 모듈이 있었다

FIFO , LIFO 모두 지원한다. 아래 링크 참고.

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

 

queue — A synchronized queue class

Source code: Lib/queue.py The queue module implements multi-producer, multi-consumer queues. It is especially useful in threaded programming when information must be exchanged safely between multip...

docs.python.org

 

728x90