multiprocessing.Process に渡された関数から戻り値を取得する方法
関数を multiprocessing.Process に渡すとき、多くの場合、次のことが必要になります。関数の戻り値を取得します。ただし、これらの値は、返された Process オブジェクトでは簡単にアクセスできません。
次のコードを考えてみましょう:
import multiprocessing
def worknum):
'''worker function''' print str(procnum) + ' represent!' return procnum
if 名前 == '__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
期待される戻り値は、'jobs' の Process オブジェクトからは取得できません。
解決策: 共有変数の使用
戻り値を取得するには、メインプロセスとワーカー間の通信を可能にする共有変数を利用できます。プロセス。
import multiprocessing
defworker(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())
説明:
以上がmultiprocessing.Process 関数から戻り値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。