我正在更新一些看起来像这样的现有代码:
for i in list
thread.start_new_thread(main, (i[0],i[1],i[2],2))
这会导致为列表中的每个项创建线程,但在创建所有线程之前不会执行。我想要在小组中执行线程,或者只是让它们在创建后直接执行。
(这里有很多关于python线程的讨论,如果我错过了这类问题已经被问到了那就很抱歉......)
答案 0 :(得分:3)
您可能会发现concurrent.futures
模块很有用。它也适用于名为futures
的Python 2。例如,要同时为main
上的每个项调用函数MY_LIST
,但最多有5个线程,您可以写:
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=5) as executor:
for result in executor.map(main, MY_LIST):
# Do something with result
print(result)