在python中批处理线程

时间:2012-12-02 15:05:59

标签: python multithreading

我正在更新一些看起来像这样的现有代码:

for i in list
  thread.start_new_thread(main, (i[0],i[1],i[2],2))

这会导致为列表中的每个项创建线程,但在创建所有线程之前不会执行。我想要在小组中执行线程,或者只是让它们在创建后直接执行。

(这里有很多关于python线程的讨论,如果我错过了这类问题已经被问到了那就很抱歉......)

1 个答案:

答案 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)