python: data structure - Queue

  • if dealing with millions data, an effcient container is needed: queue
  • List: slow for inserting; Set: slow for checking, extension, searching, and soring
  • Queue: FIFO and LIFO

FIFO queues (queue)

  • used a lot in a lot of concurrent applications
  • can have bounded to some max size of memory for a queue
  • put() and get() . (note: the index of the elements in the queue starts from '1' instead of '0')
  • full() and empty()
  • elements in the queue can be different types
  • Python implements queues on top of the collections.deque data structure. Deques are advanced data structures that permits efficient access to both ends of the collection. it provides a more flexible interface than is exposed by Queue.

LIFO queues (stack)

  • use same API as FIFO queues: put() and get()
  • working with the end of a list is an efficient operation, so LifoQueue uses a standard list under the hood
  • use LifoQueue instead of List: the former supports clean concurrent access from multiple threads, if you need a stack-like behavior in a concurrent setting, a LifoQueue should be used.

Priority queues (heap)

  • get() and put() API, but return the most "important" item instead of the ordered item.
  • a common convention is to store tuples in the priority queue, where the first element in the tuple is the priority for the element, and the second element is the data. another common paradigm is to implement the __lt__ method.
  • might be used by a search engine or recommendation tools
  • almost universally implemented using the heap data structure

猜你喜欢

转载自blog.csdn.net/zhangxlubc/article/details/84468879