In this Python tutorial, we will discuss the priority queue in python. Also, We will see these below topics as:
- What is the priority queue in python?
- Python priority queue implementation
- Max priority queue in python
- Priority queue using a python library
- Priority queue implementation using heapq in python
- Python heapq example
- Python Priority Queue vs heapq
What is the priority queue in python?
What is the priority queue in python? A priority queue in python is an advanced type of queue data structure. Instead of dequeuing the oldest element, a priority queue sorts and dequeues elements based on their priorities. A priority queue is commonly used for dealing with scheduling problems. It gives precedence to tasks with higher urgency.
Python Priority queue implementation
To implement a priority queue in Python, we have to declare an empty Python list into which elements are inserted using the append() method of list class. The list is then sorted in ascending order. The While loop is used to retrieve the elements using the pop() method.
Example:
student = []
student.append((5, 'Nick'))
student.append((1, 'Rohan'))
student.append((3, 'Jack'))
student.sort(reverse=True)
while student:
t = student.pop()
print(t)
After writing the above code (python priority queue implementation), Ones you will print ” t “ then the output will appear as “ (1, ‘Rohan’) (3, ‘Jack’) (5, ‘Nick) ”. Here, the element sorts and dequeue elements based on their priority queue.
You can refer to the below screenshot for python priority queue implementation.
You may like Draw colored filled shapes using Python Turtle and How to Create a Snake game in Python using Turtle.
Max priority queue in Python
Now, let us understand max priority queue in Python.
In the Python max priority queue, the list will be arranged in descending order of their priority. The While loop is used to retrieve the elements using the pop(0) method.
Example:
student = []
student.append((5, 'Nick'))
student.append((1, 'Rohan'))
student.append((3, 'Jack'))
student.sort(reverse=True)
while student:
t = student.pop(0)
print(t)
After writing the above code (max priority queue in python), Ones you will print “t” then the output will appear as “ (5, ‘Nick) (3, ‘Jack’) (1, ‘Rohan’) ”. Here, the list is sorted in descending order and dequeue elements based on their priority queue.
You can refer to the below screenshot for max priority queue in python.
Priority queue using a Python library
Let us see how we can implement Priority queue using a Python library.
Python provides a built-in implementation of a priority queue. The queue module is imported and the elements are inserted using the put() method. The while loop is used to dequeue the elements using the get() method. The time complexity of the queue.PriorityQueue class is O(log n).
Example:
from queue import priorityQueue
q = PriorityQueue()
q.put((10,'Red balls'))
q.put((8,'Pink balls'))
q.put((5,'White balls'))
q.put((4,'Green balls'))
while not q.empty():
item = q.get()
print(item)
After writing the above code (priority queue using a python library), Ones you will print ” item “ then the output will appear as “ (4, ‘Green balls’) (5, ‘White balls’) (8, ‘Pink balls’) (10, ‘Red balls’) ”. Here, the list is sorted in ascending order and dequeue elements based on their priority queue.
You can refer to the below screenshot for priority queue using a python library.
Priority queue implementation using heapq in python
We can also use heapq module in python to implement a priority queue. We will import heapq from the library and then created an empty list. But heapq only provides the min-heap implementation.
Example:
import heapq
s_roll = []
heapq.heappush(s_roll,(4, "Tom"))
heapq.heappush(s_roll,(1, "Aruhi"))
heapq.heappush(s_roll,(3, "Dyson"))
heapq.heappush(s_roll,(2, "Bob"))
While s_roll:
deque_r = heapq.heappop(s_roll)
print(deque_r)
After writing the above code (priority queue implementation using heapq in python), Ones you will print ” deque_r “ then the output will appear as “ (1, ‘Aruhi’) (2, ‘Bob’) (3, ‘Dyson’) (4, ‘Tom’) ”. Here, by using heappush() method of the heapq module, we inserted the elements into the list. While loop is then used to pop elements out.
You can refer to the below screenshot priority queue implementation using heapq in python.
Python heapq example
We will use heapq class to implement heaps in python. In heapq by default, min-heap is implemented by this class.
Example:
from heapq import heapify, heappush, heappop
heap = []
heapify(heap)
heappush(heap, 5)
heappush(heap, 40)
heappush(heap, 30)
heappush(heap, 50)
print("Minimum value of heap is : "+str(heap[0]))
print("The heap element : ")
for i in heap:
print(i, end = ' ')
print("\n")
element = heappop(heap)
print("The heap element : ")
for i in heap:
print(i, end= ' ')
After writing the above code (python heapq example), Ones you will print then the output will appear as “ Minimum value of heap is : 5 ”. Here, by using heappush() method of the heapq module, we inserted the elements into the heap and it will print the value of the minimum element.
You can refer to the below screenshot python heapq example
Python Priority Queue vs heapq
Priority Queue | heapq |
Queue.PriorityQueue is a thread-safe class | heapq module makes no thread-safety |
In queue.PriorityQueue, you can use the usual queue method put() to add items. | In heapq, you can use the method heappush() to add new items. |
In queue.PriorityQueue, you can use the usual queue method get() to remove. | In heapq, you can use the method heappop() to remove. |
You may like the following Python tutorials:
- Python epoch to DateTime + Examples
- Python write variable to file + Examples
- Python 3 pickle typeerror a bytes-like object is required not ‘str’
- Python binary search and linear search
- Python dot product and cross product
- Python exit command (quit(), exit(), sys.exit())
- Python input and raw_input function
- Sorting algorithms in Python (Detailed Tutorial)
- How to convert a String to DateTime in Python
In this Python tutorial, we have learned about the priority queue in python. Also, We covered these below topics:
- What is the priority queue in python?
- Python priority queue implementation
- Max priority queue in python
- Priority queue using a python library
- Priority queue implementation using heapq in python
- Python heapq example
- Python Priority Queue vs heapq
I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.