Python 並列処理で関数を同時に実行する方法
Python では、複数の関数を同時に実行しようとするのが難しい場合があります。特に、機能が相互干渉せずに独立して動作する場合、1 つの機能が完了するのを待ってから別の機能を開始すると、効率が制限されます。この問題に対処するために、Python はスレッド化とマルチプロセッシングという 2 つのアプローチを提供します。
真の並列処理のためのマルチプロセッシングの探索
マルチプロセッシングは、Python で真の並列処理を実現するための好ましい選択肢です。 CPython によって課される制約。マルチプロセッシングの使用を示す完全な例を次に示します。
from multiprocessing import Process def func1(): print("func1: starting") for i in range(10000000): pass print("func1: finishing") def func2(): print("func2: starting") for i in range(10000000): pass print("func2: finishing") if __name__ == "__main__": p1 = Process(target=func1) p1.start() p2 = Process(target=func2) p2.start() p1.join() p2.join()
このアプローチでは、Python のマルチプロセッシング モジュールの Process クラスを使用して、関数ごとに子プロセスを生成および管理します。プロセスを開始して参加することで、func1 と func2 の両方を並行して実行できます。
並列実行のカプセル化
プロセスの開始と参加の仕組みは、便利にカプセル化できます。 function:
def runInParallel(*fns): proc = [] for fn in fns: p = Process(target=fn) p.start() proc.append(p) for p in proc: p.join() runInParallel(func1, func2)
この関数は、任意の数の関数を入力として受け取り、並列実行を開始します。これにより、基礎となるプロセス処理が抽象化され、複数の機能を同時にシームレスに実行できるようになります。
以上が並列処理を使用して複数の Python 関数を同時に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。