ホームページ >バックエンド開発 >Python チュートリアル >Python 3.x でマルチプロセス管理にマルチプロセッシング モジュールを使用する方法

Python 3.x でマルチプロセス管理にマルチプロセッシング モジュールを使用する方法

WBOY
WBOYオリジナル
2023-07-31 18:36:231486ブラウズ

Python 3 でマルチプロセス管理にマルチプロセッシング モジュールを使用する方法。x

はじめに:
Python では、マルチコア CPU の普及により、マルチプロセス プログラミングが重要なスキルになりました。 multiprocessing モジュールは、マルチプロセスを処理するための Python の標準ライブラリです。この記事では、マルチプロセス管理に multiprocessing モジュールを使用する方法を紹介し、コード例を示して説明します。

1. マルチプロセッシング モジュールの概要
Python のマルチプロセッシング モジュールは、Python プログラムを複数のプロセスで実行するようにマップできるラッパーを提供します。マルチプロセッシング モジュールはスレッドセーフであり、スレッド モジュールよりも多くの機能を提供します。

2. multiprocessing モジュールの共通関数とクラス

  1. multiprocessing.Process クラス
    multiprocessing.Process クラスは、プロセスの作成と管理に使用されます。これには 4 つの主なメソッドがあります:
  2. start(): プロセスを開始し、run() メソッドを呼び出します。
  3. run(): プロセスのエントリ関数はユーザーが定義する必要があります。
  4. join([タイムアウト]): プロセスが終了するまで待ちます。タイムアウトが指定されていない場合は、プロセスが終了するまで待機します。
  5. is_alive(): プロセスがまだ実行中かどうかを確認します。
  6. multiprocessing.current_process() 関数
    multiprocessing.current_process() 関数は、現在のプロセスの Process オブジェクトを返します。
  7. multiprocessing.active_children() 関数
    multiprocessing.active_children() 関数は、現在のプロセスによって作成された子プロセスのみを含む、実行中の子プロセスのリストを返します。
  8. multiprocessing.Pool クラス
    multiprocessing.Pool クラスは、複数のプロセスの実行を簡単に管理できるプロセス プールを作成するために使用されます。最も一般的に使用されるメソッドは次のとおりです。
  9. apply(func, args): 関数を同期的に実行し、結果を返します。
  10. apply_async(func, args): 関数を非同期的に実行し、AsyncResult オブジェクトを返します。
  11. close(): プロセス プールを閉じ、新しいタスクを受け入れなくなります。
  12. join(): メインプロセスは、すべての子プロセスが終了するまで待機します。

3. マルチプロセッシング モジュールを使用したサンプル コード
以下は、マルチプロセス管理にマルチプロセッシング モジュールを使用する方法を示す簡単な例です。まず、名前パラメータを受け取り、名前を出力するワーカー関数が定義されます。次に、メイン プログラムで multiprocessing.Pool を使用して、4 つのプロセスを含むプロセス プールを作成します。次に、apply_async メソッドを使用してワーカー関数を非同期に実行し、パラメーター i を渡して結果リストに追加します。最後に、すべてのプロセスが pool.close() メソッドと pool.join() メソッドを通じて実行を完了するまで待ちます。最後に、result.get() メソッドを通じて実行結果を取得し、出力します。

上記のコードを実行すると、次の結果が出力されます。

import multiprocessing

def worker(name):
    print('Worker %s' % name)
    return name

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)
    results = []
    
    for i in range(4):
        result = pool.apply_async(worker, args=(i,))
        results.append(result)

    pool.close()
    pool.join()
    
    for result in results:
        print(result.get())

概要:

マルチプロセッシング モジュールを使用すると、マルチプロセス プログラミングを簡単に実行できます。この記事では、マルチプロセッシング モジュールの一般的な関数とクラスを紹介し、サンプル コードを通じてそれらの使用方法を示します。マルチプロセッシング モジュールを使用すると、マルチコア CPU をより有効に活用でき、プログラムの実行効率が向上します。


参考資料:

[1] Python 公式ドキュメント - multiprocessing モジュール https://docs.python.org/3/library/multiprocessing.html

以上がPython 3.x でマルチプロセス管理にマルチプロセッシング モジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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