Python
2. 큐(Queue)
Eva_0401
2020. 3. 16. 21:00
- 멀티테스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해
사용(운영체제에서 씀)
1. 종류
- FIFO (선입선출) : 먼저 들어간 것이 먼저 나옴
INPUT
F | E | D | C | B | A |
OUTPUT
: 먼저 들어간 A가 먼저 나오게 된다.
import queue #큐 라이브러리 실행
A_queue = queue.Queue()
A_queue.put("ABCD")
A_queue.put(1)
A_queue.qsize() # 데이터가 2개 있으므로 2 출력
A_queue.get() #데이터를 꺼내주는 것, 인자는 없음 'ABCD'출력
A_queue.qsize() # 1 출력
A_queue.get() # 1 출력
- LIFO (후입선출) : 나중에 들어간 것이 먼저나옴 (컵에 돌멩이 담은 것이라 생각하면 됨)
import queue #큐 라이브러리 실행
A_queue = queue.LifoQueue()
A_queue.put("ABCD")
A_queue.put(1)
A_queue.qsize() # 데이터가 2개 있으므로 2 출력
A_queue.get() #데이터를 꺼내주는 것, 인자는 없음 '1' 출력
- PriorityQueue(우선순위) : 들어온 순서와 상관없이, 우선순위가 높은 게 먼저 나감
import queue #큐 라이브러리 실행
A_queue = queue.PriorityQueue()
A_queue.put((10,"korea")) # 안쪽 괄호는 튜플을 의미함
A_queue.put((5,1))
A_queue.put((15,"china"))
A_queue.qsize() # 3 출력
A_queue.get() # 우선순위가 젤 높은 (5,1)출력
A_queue.get() # 우선순위가 두번째로 높은 (10,'korea') 출력
2. 관련 용어
- Enqueue : 큐에 데이터를 넣는 기능
- Dequeue : 큐에서 데이터를 꺼내는 기능
3. 파이썬 queue 라이브러리
: 파이썬3에서 제공하는 Queue 라이브러리로, Queue, LifoQueue,PriorityQueue 제공
4. 연습
: 리스트 변수로 큐를 다루는 enqueue, dequeue 기능 구현해보기
queue_list=list();
def enqueue(data):
queue_list.append(data)
def dequeue():
data = queue_list[0] # 0번 인덱스에 있는 데이터를 가져온다.
del queue_list[0] # 뽑힌 데이터를 삭제하여야 함
return data
-
def : 파이썬에서 함수정의는 def로 시작한다. 함수 정의의 맨 첫줄은 반드시 : 을 포함하여야하며, 본문은 들여쓰기를 꼭 해야함! (4칸)
for index in range(10): #데이터 10개 삽입
enqueue(index)
len(queue_list) # 10 출력
dequeue() # 0부터 한개씩 빠져나옴