Message136601
The queue doc contains the following example:
------------------
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.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done
------------------
http://docs.python.org/library/queue.html
It doesn't define do_work(), num_worker_threads or do_work(), but my concern is that it doesn't stop worker threads.
I consider "t.daemon = True" as an hack to not care about stopping threads.
The example should pass a special value to each worker to stop it. For example:
<worker>
while True:
job = queue.get()
if job is None:
break
audio.play(*job)
queue.task_done()
Main thread:
...
threads = []
for i in range(num_worker_threads):
t = Thread(target=worker)
threads.append(t)
t.start()
...
for i in range(num_worker_threads):
queue.put(None)
queue.join()
for thread in threads:
thread.join() |
|
Date |
User |
Action |
Args |
2011-05-23 10:22:31 | vstinner | set | recipients:
+ vstinner, pitrou, docs@python |
2011-05-23 10:22:31 | vstinner | set | messageid: <1306146151.16.0.671326557503.issue12155@psf.upfronthosting.co.za> |
2011-05-23 10:22:30 | vstinner | link | issue12155 messages |
2011-05-23 10:22:29 | vstinner | create | |
|