import heapq import itertools import os import threading import time heap = [] class Integer(int): def __lt__(self, other): time.sleep(1e-7) return int(self) < int(other) def resize_heap(): initializers = [ list(map(Integer, range(n))) for n in (10, 2000)] for initializer in itertools.cycle(initializers): heap[:] = initializer time.sleep(1e-7) def push_pop_heap(): while True: heapq.heappush(heap, Integer(5)) if heap: heapq.heappop(heap) if __name__ == "__main__": t1 = threading.Thread(target=resize_heap) t1.start() t2 = threading.Thread(target=push_pop_heap) t2.start() try: while True: time.sleep(10) finally: os._exit(0)