Multiprocessing.Process の関数の戻り値にアクセスする
Python でのマルチプロセッシングにおいて、マルチプロセッシングに渡された関数の戻り値を取得します。プロセスはプロセスに直接保存されないため、扱いにくい場合があります。 object.
次の例を考えてみましょう:
import multiprocessing def worker(procnum): '''worker function''' print(str(procnum) + ' represent!') return procnum if __name__ == '__main__': jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i,)) jobs.append(p) p.start() for proc in jobs: proc.join() print(jobs)
このコードは各ワーカー プロセスの出力を出力しますが、戻り値に直接アクセスすることはできません。
戻り値の場合は、共有変数を使用できます。次の修正されたコードでは、マルチプロセッシング モジュールの Manager() を使用して共有辞書を作成します。
import multiprocessing def worker(procnum, return_dict): """worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum if __name__ == "__main__": manager = multiprocessing.Manager() return_dict = manager.dict() jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i, return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() print(return_dict.values())
ここで、各ワーカー プロセスは、戻り値で共有辞書 return_dict を更新します。メインプロセスは、共有辞書からこれらの値にアクセスできるようになります。
以上がPython で Multiprocessing.Process 関数から戻り値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。