マルチプロセッシングプールに似たスレッドプールですか? 質問する

マルチプロセッシングプールに似たスレッドプールですか? 質問する

マルチプロセッシングモジュールのプールクラスに似たワーカースレッド用のプールクラスはありますか?プールクラス?

例えば、マップ関数を並列化する簡単な方法が気に入っています

def long_running_func(p):
    c_func_no_gil(p)

p = multiprocessing.Pool(4)
xs = p.map(long_running_func, range(100))

ただし、新しいプロセスを作成するオーバーヘッドなしでこれを実行したいと思います。

GIL については知っています。ただし、私のユースケースでは、関数は IO バインドされた C 関数であり、Python ラッパーは実際の関数呼び出しの前に GIL を解放します。

独自のスレッド プールを作成する必要がありますか?

ベストアンサー1

モジュールには実際にスレッドベースの Pool インターフェースあることがわかりましたがmultiprocessing、それはある程度隠されており、適切に文書化されていません。

インポートできるのは

from multiprocessing.pool import ThreadPool

これは、PythonスレッドをラップするダミーのProcessクラスを使用して実装されています。このスレッドベースのProcessクラスは、multiprocessing.dummyこれは、ドキュメントこのダミー モジュールは、スレッドに基づくマルチプロセッシング インターフェイス全体を提供すると思われます。

おすすめ記事