ホームページ > バックエンド開発 > Python チュートリアル > multiprocessing.Process 関数から戻り値を取得する方法

multiprocessing.Process 関数から戻り値を取得する方法

Patricia Arquette
リリース: 2024-11-29 06:30:12
オリジナル
839 人が閲覧しました

How to Retrieve Return Values from multiprocessing.Process Functions?

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())
ログイン後にコピー

説明:

  • マルチプロセッシング マネージャーは、共有辞書 'return_dict' の作成に使用されます。
  • 各ワーカープロセスは共有の「return_dict」にアクセスし、その戻り値をそのプロセス番号の下にkey.
  • メインプロセスは、辞書の値にアクセスして戻り値を取得します。

以上がmultiprocessing.Process 関数から戻り値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート