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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 19:07:26544ブラウズ

How to Retrieve Return Values from Multiprocessing.Process Functions in Python?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。