input: Write a function to implement a priority queue with push, pop, and is_empty methods.
  assert pq.pop() == 'task3'
  assert pq.is_empty() == False
  pq.push('task4', 1)
  assert pq.pop() == 'task4'
output: import heapq
  
  class PriorityQueue:
      def __init__(self):
          self.heap = []
          self.count = 0
  
      def push(self, item, priority):
          heapq.heappush(self.heap, (priority, self.count, item))
          self.count += 1
  
      def pop(self):
          if not self.is_empty():
              return heapq.heappop(self.heap)[-1]
  
      def is_empty(self):
          return len(self.heap) == 0
  
  pq = PriorityQueue()
  pq.push('task1', 3)
  pq.push('task2', 2)
  pq.push('task3', 1)
  assert pq.pop() == 'task3'
  assert pq.is_empty() == False
  pq.push('task4', 1)
  assert pq.pop() == 'task4'