# queue_join.py from queue import Queue from threading import Thread from datetime import datetime num_worker_threads = 4 def worker(): while True: item = q.get() print(item, datetime.now()) q.task_done() q = Queue() for i in range(num_worker_threads): t = Thread(target=worker) t.daemon = True t.start() for item in range(10): q.put(item) q.join() # block until all tasks are done