Python 자료구조 #2 Queue - 728x90 큐(Queue) 가장 기본 적인 자료구조 중 하나¶ 1. 큐 구조¶ 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 음식점에서 재료 관리할 때 선입선출하는 것과 동일 함 FIFO(first-in, first-out) 또는 LILO(Last-in, Last-out) 방식으로 스택과 꺼내는 순서가 반대 2. 알아둘 용어¶ Enqueue: 큐에 데이터를 넣는 기능 Dequeue: 큐에서 데이터를 꺼내는 기능 Visualgo 사이트에서 시연해보며 이해하기: https://visualgo.net/en/list 3. queue라이브러리 활용하여 큐 자료구조 사용하기¶ 프로그램을 작성할 때 프로그램에 따라 적합한 자료구조를 사용한다. Queue(): 가장 일반적인 큐 자료 LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조(스택 구조라고 보면 됨) PriorityQueue(): 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 데이터 출력 3.1 Queue()로 큐 만들기(가장 일반 적인 큐)¶ In [1]: import queue data_queue = queue.Queue() # FIFO In [2]: data_queue.put('jihyuk') data_queue.put(1) In [3]: data_queue.qsize() Out[3]: 2 In [4]: data_queue.get() Out[4]: 'jihyuk' In [5]: data_queue.qsize() Out[5]: 1 In [6]: data_queue.get() Out[6]: 1 In [7]: data_queue.qsize() Out[7]: 0 3.2 LifoQueue()로 큐 만들기(Last-In, First-Out)¶ In [8]: import queue data_queue = queue.LifoQueue() # Lifo In [9]: data_queue.put('jihyuk') data_queue.put(9999999) In [10]: data_queue.qsize() Out[10]: 2 In [11]: data_queue.get() Out[11]: 9999999 3.3 PriorityQueue()로 큐 만들기¶ In [12]: import queue data_queue = queue.PriorityQueue() In [13]: data_queue.put((10, 'jihyuk')) data_queue.put((5, 9999999)) data_queue.put((15, 'Korea')) In [14]: data_queue.qsize() Out[14]: 3 In [15]: data_queue.get() Out[15]: (5, 9999999) 참고: 어디에 큐가 많이 쓰일까?¶ 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨 (운영체제 참조)-> 큐의 장단점 보다는, 큐의 활용 예로 프로세스 스케쥴링 방식을 함꼐 이해해두는 것이 좋다. 리스트 변수로 큐를 다루는 enqueue, dequeue 기능 구현해보기¶ In [16]: queue_list = [] def enqueue(data): queue_list.append(data) def dequeue(): data = queue_list[0] del queue_list[0] return data In [17]: for i in range(10): enqueue(i) In [18]: len(queue_list) Out[18]: 10 In [19]: dequeue() Out[19]: 0 728x90 공유하기 게시글 관리 통계학부의 데이터엔지니어링 저작자표시 변경금지 'Python' 카테고리의 다른 글 자료구조 #1 Array (0) 2023.12.21 Numpy 기본 (1) 2023.10.28 넘파이 ndarray의 axis축(axis≠행열) (0) 2022.07.27 numpy 개요(ndarray와 배열의 타입) (0) 2022.07.27 Contents 당신이 좋아할만한 콘텐츠 자료구조 #1 Array 2023.12.21 Numpy 기본 2023.10.28 넘파이 ndarray의 axis축(axis≠행열) 2022.07.27 numpy 개요(ndarray와 배열의 타입) 2022.07.27