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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to