2016-12-16 10 views
1

multiprocessing.Pool.apply_async私はそれが未来を返すことを期待していました。残念ながらそれはコールバックに基づいているようです。将来のマルチプロセッシングから.Pool.apply

は今、私はmultiprocessing.Pool.applyを呼び出すしたいと思いますが(それは非同期に処理されますので)それが将来に包まれている場合、これは何とか可能ですか?

+0

代わりにconcurrent.futuresプールを使用することを検討しましたか? – noxdafox

+0

AFAIKこれはGILに準拠する必要があることを意味します。 – abergmeier

答えて

1

クラスmultiprocessing.Poolクラスは、Process Based Poolの古いPython実装です。これはconcurrent.futuresモジュールの前に設計されています。

apply_asyncメソッドは、Futureと同様に動作するApplyResultオブジェクトを返します。

Futureオブジェクトに固執する場合は、concurrent.futures.ProcessPoolExecutorという名前を使用する必要があります。この名前はプロセスベースです。したがって、GILの影響を受けません。

あなたは、このような初期化機能やタイムアウトのサポートなど、より高度な機能が必要な場合は、Pebbleを見てすることができます。