引发此错误的多线程脚本:
thread.error : can't start new thread
当达到460个螺纹时:
^{pr2}$我想旧线程会一直堆积起来,因为脚本没有杀死它们。这是我的代码:
import threading
import Queue
import time
import os
import csv
def main(worker):
#Do Work
print worker
return
def threader():
while True:
worker = q.get()
main(worker)
q.task_done()
def main_threader(workers):
global q
global city
q = Queue.Queue()
for x in range(20):
t = threading.Thread(target=threader)
t.daemon = True
print "\n\nthreading.active_count() = " + str(threading.active_count()) + "\n\n"
t.start()
for worker in workers:
q.put(worker)
q.join()
当旧线程的工作完成后,我如何杀死它们?(回报不够吗?)在
你的
threader
函数永远不会退出,所以你的线程永远不会死。由于您只处理一组固定的工作,并且在开始工作后从不添加项目,所以可以将线程设置为在队列为空时退出。在请参阅以下更改后的代码版本和我添加的注释:
请注意,我删除了
global q
,而是将q
传递给线程函数。您不希望由前一次调用创建的线程最终与新线程共享q
(edit,尽管q.join()
阻止了这一点,但最好还是避免使用全局变量)。在相关问题 更多 >
编程相关推荐