对于下面的代码段,我想将运行线程的数量限制为20个线程。我这样做的尝试似乎有缺陷,因为一旦计数器命中20,它就不会创建新线程,但“a”的那些值不会触发do_something()函数(必须考虑数组中的每个“a”) )。任何帮助是极大的赞赏。
count = 0
for i in range(len(array_of_letters)):
if i == "a":
if count < 20:
count=+1
t = threading.Thread(target=do_something, args = (q,u))
print "new thread started : %s"%(str(threading.current_thread().ident))
t.start()
count=-1
答案 0 :(得分:1)
concurrent.futures
有一个ThreadPoolExecutor
类,允许提交许多任务并指定最大工作线程数:
with ThreadPoolExecutor(max_workers=20) as executor:
for letter in array_of_letters):
executor.submit(do_something, letter)
查看软件包文档中的更多示例。