2012-01-25 11 views
3

は、私は、PythonでマルチプロセッシングパッケージはPoolあなたが呼び出すために必要であることをrecently learnedセロリジョブ(python)のclose()またはjoin()と同等ですか?

あなたはそれらのプロセス状態のために使用されるメモリを解放するために仕上がっている
pool.close() 
pool.join() 

。さもなければ、それらは永続し、コンピュータはpythonジョブでいっぱいになります。 CPUを使用せず、メモリを消費します。

私の質問はこれです:私は今、並列化のためのcelery(代わりのPoolを使用してい - 私はDjangoのWSGIアプリ内で動作しているよ、とPoolは難しい一度フォークジョブからすべてのユーザーを防止することができます、これによりサーバーがクラッシュします)。

私はceleryと非常によく似た現象に気付きました。バックグラウンドで動作している私の6つのセロリプロセスは、メモリを貪り始めます。これは正常なのでしょうか、それともclose()とjoin()を呼び出して同等の結果が得られましたか?celeryというタスクに私が結果を取得したので、もうそれを必要としないと伝えることができますか?

ありがとうございました。
Oliver

答えて

1

文書を参照すると、自動的に閉じられるので、作業者を閉じる必要はありません。しかし、あなたはkillを使用してそれらを閉じたり、それらを破棄し、強制することができます:ここで

from celery.task.control import discard_all 
discard_all() 

は、いくつかのexamples開発者からです。

関連する問題