# Priority Queue in Python

Priority Queue is an extension of the queue with following properties.
1) An element with high priority is dequeued before an element with low priority.
2) If two elements have the same priority, they are served according to their order in the queue.

Below is simple implementation of priority queue.

 `# A simple implementation of Priority Queue ` `# using Queue. ` `class` `PriorityQueue(``object``): ` `    ``def` `__init__(``self``): ` `        ``self``.queue ``=` `[] ` ` `  `    ``def` `__str__(``self``): ` `        ``return` `' '``.join([``str``(i) ``for` `i ``in` `self``.queue]) ` ` `  `    ``# for checking if the queue is empty ` `    ``def` `isEmpty(``self``): ` `        ``return` `len``(``self``.queue) ``=``=` `[] ` ` `  `    ``# for inserting an element in the queue ` `    ``def` `insert(``self``, data): ` `        ``self``.queue.append(data) ` ` `  `    ``# for popping an element based on Priority ` `    ``def` `delete(``self``): ` `        ``try``: ` `            ``max` `=` `0` `            ``for` `i ``in` `range``(``len``(``self``.queue)): ` `                ``if` `self``.queue[i] > ``self``.queue[``max``]: ` `                    ``max` `=` `i ` `            ``item ``=` `self``.queue[``max``] ` `            ``del` `self``.queue[``max``] ` `            ``return` `item ` `        ``except` `IndexError: ` `            ``print``() ` `            ``exit() ` ` `  `if` `__name__ ``=``=` `'__main__'``: ` `    ``myQueue ``=` `PriorityQueue() ` `    ``myQueue.insert(``12``) ` `    ``myQueue.insert(``1``) ` `    ``myQueue.insert(``14``) ` `    ``myQueue.insert(``7``) ` `    ``print``(myQueue)             ` `    ``while` `not` `myQueue.isEmpty(): ` `        ``print``(myQueue.delete())  `

Output:

```12 1 14 7
14
12
7
1
()
```

Note that the time complexity of delete is O(n) in above code.

A better implementation is to use Binary Heap which is typically used to implement priority queue. Note that Python provides heapq in library also.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.