因为q.join()了 ,而消费者线程没办法 从中取出url 所以被卡死了
运行后只有 ,最开始的时候 ,,消费者线程 从queue中得到了url , 后面就 消费者线程就再 也没有得到url 了 ,麻烦大家帮忙解答下,谢谢。
消费者join一下试试,然后你判断一下条件,如果queue为空的时候,循环break
如果self.Queue为空的话, self.Queue.get() 会抛出 Queue.Empty 异常,这时候线程会退出,这时候都没有工作线程了。
在run()方法的while循环里面增加try…except捕获该异常试试。代码大概如下:
while True:
try:
self.Queue.get(timeout=5) #这里的timeout可以根据情况设置为合适的值
except Queue.Empty: # 任务队列空的时候结束此线程
break
except:
raise
======================================================