web-dev-qa-db-ja.com

Python:呼び出しスレッドからサブプロセスを制御する

APIとして Python Eve を使用して MongoDB へのデータベースインターフェイスを作成しています。

データベースには、いくつかの計算に必要なパラメータと値を含むいくつかのドキュメントが格納されています。目的のデータにアクセスする必要があるすべての計算ルーチンを含むPythonモジュールを作成しました。

計算を完了するには少し時間がかかるため、並流シミュレーションに複数のコアを使用するためにマルチスレッドではなくマルチプロセッシングを優先します(計算を並列に実行し、コアごとに1つの計算を実行しますが、入力パラメーターが異なり、1つの計算を複数のコアに分割しません)。

これらの並列計算を独自の(サブ)プロセスとして開始するために、「スレッドオブザーバー」と呼ばれる別のスレッドによって監視される親スレッドのようなものを使用することを考えました。これらの計算プロセスのそれぞれがデータベースにアクセスする必要があるため、eve-APIを requests モジュールと組み合わせて使用​​することを考えました。

これらすべての考えはすべて、次のような設定につながります。

schema

この概念に基づいて、親スレッドからサブプロセスを制御する方法についてはわかりません。 Process 1は、Thread 1終了しますか?

注:目的のソリューションは、UNIXベースのマシンとWindowsベースのマシンの両方で機能する必要があります。したがって、開始されたプロセスから返されたpidを使用してkillを使用して強制終了することは、Windowsマシンでは実行できないため機能しません。

6
albert

Python 2 および Python Process with Queue and Pipeのようなクラスを持つマルチプロセッシングパッケージで開始し、Python =実行します。ワーカープロセスを制御するマルチプロセッシングのプールクラスに興味があるようです。これは、通常のfork/exec、wait、およびsignalとは異なるスタイルの制御です。

2
maxpolk