import threading import Queue import urllib2 import time class ThreadURL(threading.Thread): def __init__(self, queue): threading.Thread.__init__(self)
One thing, in the thread run function, the while True loop, if some exception happened, the task_done() may not be called however the get() has already been called. Thus the queue.join() may never end.