use of Queue

Diez B. Roggisch deets at
Wed Aug 27 11:56:29 CEST 2008

Alexandru  Mosoi wrote:

> how is Queue intended to be used? I found the following code in python
> manual, but I don't understand how to stop consumers after all items
> have been produced. I tried different approaches but all of them
> seemed incorrect (race, deadlock or duplicating queue functionality)
>     def worker():
>         while True:
>             item = q.get()
>             do_work(item)
>             q.task_done()
>     q = Queue()
>     for i in range(num_worker_threads):
>          t = Thread(target=worker)
>          t.setDaemon(True)
>          t.start()
>     for item in source():
>         q.put(item)
>     q.join()       # block until all tasks are done

Put a sentinel into the queue that gets interpreted as "terminate" for the
workers. You need of course to put it in there once for each worker.


More information about the Python-list mailing list