Queue(큐) FIFO(first in first out) 의 규칙을 가진 자료구조이다. 즉 먼저 들어온 요소가 먼저 나간다는 뜻이다.
이러한 자료구조를 파이썬 코드로 나타내보자.
1. 일반적인 Queue 자료구조
1
2
3
|
import queue
data_queue = queue.Queue()
|
cs |
위와 같이 정의하면 data_queue 라는 이름의 queue 자료구조가 간단하게 완성된다. 이제 data를 집어 넣고 빼는 코드를 짜보자.
1
2
3
4
5
6
7
|
data_queue.put("a") # a 입력
data_queue.put("b") # b 입력
data_queue.put("c") # c 입력
print(data_queue.get()) # a 출력
print(data_queue.get()) # b 출력
print(data_queue.get()) # c
|
cs |
put을 통해 내가 큐에 데이터를 집어넣을 수 있고, get을 통해 데이터를 먼저 입력한 순으로 하나씩 꺼낼 수 있다.
실행해보면 넣은 순서대로 값이 하나씩 나오는것을 알 수 있다.
2 우선순위 큐(Priority Queue)
무조건 먼저 들어간 자료가 먼저 나오는 것이 아닌 각각 우선순위를 가지고 있어 그 우선순위에 따라서 자료를 꺼낼 수 있는 구조인 우선순위 큐를 파이썬 코드로 작성해보자. 큐와 마찬가지로 간단하게 작성하고 활용해 볼 수 있다.
1
2
3
4
5
6
7
8
9
10
|
import queue
data_queue = queue.PriorityQueue()
data_queue.put((5,"덜 중요한 약속"))
data_queue.put((3,"중요한 약속"))
data_queue.put((10,"안 중요한 약속"))
print(data_queue.get()) # 중요한 약속 출력
print(data_queue.get()) # 덜 중요한 약속 출력
print(data_queue.get()) # 안 중요한 약속 출력
|
cs |
다음과같이 우선순위를 입력해서 우선순위 순서대로 나올 수 있게 할 수가 있다.
** 큐(Queue) 형태의 자료구조가 많이 쓰이는 곳은?
운영체제의 멀티 태스킹을 위한 스케쥴링 방식에 활용된다.
** 파이썬 리스트를 통해 queue 구현해보기
1
2
3
4
5
6
7
8
9
|
queue_list = list()
def enqueue(data): # queue에 data 집어넣기
queue_list.append(data)
def dequeue(): # queue에 data 꺼내기
data = queue_list[0]
del queue_list[0]
return data
|
cs |
** 구현한 queue 예시
1
2
3
4
5
6
7
8
9
10
|
for index in range(10): # 0에서 9까지 순서대로 queue에 집어넣기
enqueue(index)
dequeue() #0 출력됨
dequeue() #1 출력됨
dequeue() #2 출력됨
dequeue() #3 출력됨
.
.
|
cs |
'프로그래머, 보안 관련 지식 > 자료구조 익숙해지기 (with python)' 카테고리의 다른 글
자료구조 : Array in python (0) | 2020.08.10 |
---|