4

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

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

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

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

4

1 回答 1

4

您可能会发现该concurrent.futures模块很有用。它也可用于名称为 的 Python 2 futures。例如,要同时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)
于 2012-12-02T15:17:18.277 回答