use of Queue
Gerhard Häring
gh at ghaering.de
Wed Aug 27 06:06:40 EDT 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()
if item is None:
break
> 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)
# stop all consumers
for i in range(num_worker_threads):
q.put(None)
>
> q.join() # block until all tasks are done
This is how I do it.
-- Gerhard
More information about the Python-list
mailing list