マルチプロセッシングからサブクラスを作成します。マルチプロセッシングでstart()とrun()の属性を更新する方法
オブジェクトp.run()はlong_runtime_procからinstance.ret_valueを更新できますが、p_start()はlong_runtime_procが呼び出されて実行されてもret_valueを更新できません。
p.start()でret_valueを取得するにはどうすればよいですか?直接Process.run()
を呼び出す
*class myProcess (multiprocessing.Process):
def __init__(self, pid, name, ret_value=0):
multiprocessing.Process.__init__(self)
self.id = pid
self.ret_value = ret_value
def run(self):
self.ret_value = long_runtime_proc (self.id)*
おかげだろうキューから値を割り当てられていることになります。 p.run()は、サブプロセスの代わりにメインプロセスでprocを実行するだけで、メインプロセスに値を返すことができます。そして、それは私が必要とする並行ではありません。 p.start()は実際には新しいプロセスを呼び出しますが、親プロセスに値を転送することはできません。 – xinwu
@xinwu:正しい、それは私が言ったことです: 'p.run()'は同じプロセスで実行され、結果を得ることができます。 'p.start()'は、子プロセスで 'run()'メソッドを実行します。さらに私の答えを読んだら、解決策はキューや他の形式のプロセス間通信を使用することです。 – mhawke
はい、キューまたはパイプを使用して、並列プロセスから戻り値を取得できます。あなたの返信をありがとう。 – xinwu