プロセスの数がPythonのCPUのスレッドの総数よりも多い場合、アプリケーションをより高速に実行できるのはなぜですか?

DachuanZhao

プロセスの数がPythonのCPUのスレッドの総数よりも多いのに、より多くのプロセスを使用することでアプリケーションがより高速に実行されるのはなぜですか?これがコードです

import time
from concurrent.futures import ProcessPoolExecutor

def wait():
    time.sleep(1)

start = time.time()

#create the process pool
with ProcessPoolExecutor(max_workers=40) as executor:
    future = []
    for _ in range(400):
        future.append(executor.submit(wait))
    start2 = time.time()
    future_res = []
    for i,v in enumerate(future):
        future_res.append(v.result())
    print(time.time()-start)
    print(time.time()-start2)

その出力は次のとおりです。

10.364367246627808
9.99793791770935

ますます多くのプロセスを使用すると、アプリケーションがどんどん速く実行されるということですか?

J_H

指定されたwait関数は、興味深い量のCPUサイクルを消費しません。スケジューラーとのみ対話します。同時実行レベルが高いほど、重複する多くのスリープがより速く完了することは驚くことではありません。ここで選択しましたnum_tasks = 400値が大きい場合、完了時間はの比率に近づく傾向がありますnum_tasks / max_workersこれは、CPUバウンドワークロードで発生する動作とはまったく異なります。

「実際の」問題として別のワークロードを念頭に置いている場合は、別の質問でそれについて質問し、それが主にCPU、I / O、またはネットワークにバインドされているかどうかを説明してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ