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 に答える