: 가장 먼저 넣은 데이터를 가장 먼저 꺼내도록 하는 데이터 구조
+) Visualog
import queue
# queue 선언
data_queue = queue.Queue()
# 데이터 삽입
data_queue.put("apple")
data_queue.put(1)
# 데이터 사이즈 확인
print(data_queue.qsize())
# 데이터 꺼내기 : 가장 먼저 들어간 데이터부터 순서대로 나옴
print('첫번째 데이터: ', data_queue.get())
print('두번째 데이터: ', data_queue.get())
print(data_queue.qsize())
--- 출력 결과 ---
2
첫번째 데이터: string
두번째 데이터: 1
0
: 변형된 정책을 사용 ➔ LIFO ➔ 가장 마지막에 넣은것이 가장 마지막에 나옴 (like a stack)
import queue
# queue 선언
data_queue = queue.LifoQueue()
# 데이터 삽입
data_queue.put("apple")
data_queue.put(1)
# 데이터 사이즈 확인
data_queue.qsize()
# 데이터 꺼내기
data_queue.get()
: 각 데이터에 우선순위를 부여 ➔ tuple 사용
: 우선순위가 높은 순서대로 나옴 ➔ 데이터를 삽입하는 순서와 상관 없음
import queue
# queue 선언
data_queue = queue.PriorityQueue()
# 데이터 삽입
data_queue.put((4, 'Apple')) # tuple => (우선순위, 데이터)
data_queue.put((1, 'Lemon'))
data_queue.put((10, 'Peach'))
data_queue.put((3, 2))
print(data_queue.get())
print(data_queue.get())
--- 출력 결과 ---
(1, 'Lemon')
(3, 2)
: 운영체제에서 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용
+) 내용 추가, 이해 필요
# list를 이용하여 queue 구현
data_list = []
def enqueue(data): # .put()
data_list.append(data)
def dequeue(): # .get()
data = data_list[0]
del data_list[0]
return data
# 데이터 생성
for index in range(10):
enqueue(index)
print('data_list의 길이: ', len(data_list)) # .qsize()
print()
# 데이터 출력
print('현재 data_list: ')
for a in data_list:
print(a)
print()
print('꺼낸 데이터: ', dequeue()) # 데이터 꺼내기
print()
print('현재 데이터 리스트: ', data_list)
--- 출력 결과 ---
data_list의 길이: 10
현재 data_list:
0
1
2
3
4
5
6
7
8
9
꺼낸 데이터: 0
현재 데이터 리스트: [1, 2, 3, 4, 5, 6, 7, 8, 9]