2017-01-15 6 views
0

私はmultiprocessing.Processを使用して、機能が長時間実行されないようにしています。マルチプロセッシングと同等の機能です.Poolのパススルーでの結合

pythonのmultiprocessingの代わりにpathosを使用したいのですが(標準のマルチプロセッシングパッケージでは処理できないため)、いくつかの機能が不足しているようです:pathosに何も見つかりませんタイムアウト引数を持つjoinが可能です。

私はある時間が過ぎてからプロセスを終了させることができるようなものがあると思っています。私はpathos作者だ

+1

あなたは 'concurrent.futures'を見ましたか? –

+0

@RolandSmith私はこれが存在することさえ知りませんでした。しかし、インタラクティブなインタプリタでは、ドキュメンテーションに従って動作しません。これは、私が使用したいと思う機能です。 – user1999728

答えて

3

(可能ではない、と選択肢が非常に複雑に見える私は窓を使用していますので、最も簡単な代替 - - signalを使用しては)。 multiprocess、つまりmultiprocessingのフォーク(これはpathosの下にあります)を試してみるとよいでしょう。 pathosがインストールされている場合は、既にインストールされているはずです。

あなたはProcessにそれがmultiprocessingと同じ機能のすべて(プラスdillから追加のシリアル化機能)を持っているこれらの2つの方法のいずれかを取得することができます:だから

>>> import pathos 
>>> pathos.helpers.mp.Process 
<class 'multiprocess.process.Process'> 
>>> import multiprocess 
>>> multiprocess.Process 
<class 'multiprocess.process.Process'> 

multiprocessingで見つかった任意のオブジェクトを上記のように、timeout引数もあります。

+0

ありがとうございます。正しく覚えていれば、 'pathos.helpers.mp'にアクセスしようとしましたが、' __file__'属性が元の 'マルチプロセッシング 'に戻るように見えましたので、標準のPythonマルチプロセッシングパッケージへの参照に過ぎないと思いました。 – user1999728

関連する問題