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