ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Queue
    Programming/Data Structure 2020. 10. 15. 08:25
    728x90

    Python에서 Queue에 대해서 정리

     

    가장 먼저 넣은 것을 가장 먼저 꺼내는 구조 

    ex) 음식점에서 줄을 서는 행위, 먼저 줄 슨 사람이 먼저 받는다. 

    FIFO(First In - First Out) // LILO(Last In - Last Out)은 Stack 구조

     

    4,3,2,1,5의 순서대로 Data를 넣고, 차례로 뺄때는

     

    4

    3

    2

    1

    5

    의 순서로 빠진다. 

     

    Data를 빼면 빠진 Data는 Queue에서 삭제된다. 

     

    Queue 용어 

    EnQueue : Queue에 Data를 넣는 기능

    DeQueue : Queue에서 Data를 빼는 기능 

     

    참고할만한 Site

    https://visualgo.net/en/list

     

    Queue를 클릭해서 보기 

     

    Python에서는 Queue 라이브러리를 지원한다. 

    Queue(), LifoQueue(), PriorityQueue()를 지원

    Queue - 일반적인 구조

    LifoQueue - Last In First Out, 마지막에 넣은 값이 가장 먼저 나온다.

    PriorityQueue - 

     

    예제 

    1. Queue

    import queue
    data_queue = queue.Queue()
    data_queue.put(1) #enQueue
    data_queue.qsize() #Queue Size check
    data_queue.get() #deQueue
    data_queue.qsize()

    2. LIFO Queue

    #LiFO Queue
    #Last In First Out , 마지막에 넣은 것이 가장 먼저 추출됨
    import queue
    data_queue = queue.LifoQueue()
    data_queue.put(1)
    data_queue.put(2)
    
    data_queue.get() # 2가 먼저 나온다.

    3. Priority Queue

    import queue
    
    data_queue = queue.PriorityQueue()
    data_queue.put((10, "USA")) #튜플의 첫번째가 우선순위, 두번째가 값
    data_queue.put((5, "CHINA"))
    data_queue.put((1,"KOREA"))
    
    data_queue.qsize()
    data_queue.get() #KOREA가 출력

     

     

    Queue는 어디에 많이 사용될까?

    멀티태스킹을 위한 프로세스 스케쥴 방식을 구현하기 위해서 많이 사용됨

     

    # list를 가지고 Queue를 구현
    queue_list = list()
    
    def enqueue(data):
      queue_list.append(data)
    def dequeue():
      data = queue_list[0]
      del queue_list[0]
      return data
    

    'Programming > Data Structure' 카테고리의 다른 글

    Tree  (1) 2020.11.19
    Hash Table  (0) 2020.11.10
    링크드리스트  (0) 2020.10.29
    Stack  (0) 2020.10.19
    배열(Array)  (0) 2020.10.14
Designed by Tistory.