Simple question about Queue.Queue and threads
frank at chagford.com
Fri Feb 5 13:45:30 CET 2010
Assume you have a server process running, a pool of worker threads to
perform tasks, and a Queue.Queue() to pass the tasks to the workers.
In order to shut down the server cleanly, you want to ensure that the
workers have all finished their tasks. I like the technique of putting a
None onto the queue, and have each worker check for None, put None back onto
the queue, and terminate itself.
The main program would look something like this -
for worker in worker_threads:
At this point you can be sure that each thread has completed its tasks and
However, the queue is not empty - it still has the final None in it.
Is it advisable to finalise the cleanup like this? -
while not q.empty():
Or is this completely redundant?
More information about the Python-list