Simple question about Queue.Queue and threads

Frank Millman frank at
Fri Feb 5 13:45:30 CET 2010

Hi all

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 
terminated itself.

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?


Frank Millman

More information about the Python-list mailing list