私の質問の要点は、親(この状況のデーモン)が殺されたときに、マルチプロセッシングキューがどうなるかです。親出口のPythonマルチプロセッシングキュー
私は子プロセスのためのジョブをキューに入れ、バックグラウンドで動作するデーモンがあります。管理者が殺されている場合、それはsomeQueue
を使用しようとし、したがって、で述べたように、それを破損していないと仮定すると(
class manager(Daemon):
def run(self):
someQueue = MP.Queue()
someChild = MP.Process(target=someCode, args=(someArgs))
someChild.start()
...
をドキュメント)、とにかくキュー内のデータを回復するには?
この子プロセスを終了する前に、someQueue
をsomeChild
にクリーンアップするという2つの理論的解決策があります。また、マネージャが終了したときにキューの状態を復元できるようにキューをダンプすると、私の問題も解決します。しかし、どちらかを実装する前に、正しい方向に微調整するのが良いでしょう。
おかげで、
これがどのように質問に答えるかわかりません。マルチプロセッシングにはパイプとキューがありますので、パイプとキューの両方がこの状況で同様に動作すると想定します(どちらの場合も、MPのドキュメントで前述の破損したケースを避ける限り)。 –
これらのキューのデータを取得するためにOSレベルのトリッキーがあると確信していましたが、そうしようとする方法については言及していませんか?私はpythonを使用しているので、なぜこれらの状況を助けることができるいくつかのモジュールがなければならないときは、永続的なキュークラスを書くのです。 –
*(...) 'Queue()'は 'Pipe()'の上に構築されています。* - [Pythonマルチプロセッシング - パイプ対キュー](http://stackoverflow.com/q/8463008/95735) –