#のコード:UTF-8
インポートOSの
インポート時
からマルチプロセッシングインポートプール
デフFUNC(N):
印刷(" %S:%S "%(os.getpid()、n))を
リターン N ** 2 デフ関数func2(n)を:
印刷(" %S:%S "%(os.getpid()、n))を
time.sleep( 1 )
リターン N ** 2 なら__name__ == ' __main__ ' :
START_TIME = time.time()
プール =プール(5) #これは、5つのタスクの過程にあった後に5つの工程プロセスプールを作成するには、最初から、
res_lst = []
のために I における範囲(10 :)
RES = pool.apply(FUNC、引数=(私は、)) #このタスクは、解像度を取得したり、ブロッキングがブロックしていない可能性があり、プロセスのタスクfuncを実行を待つ完了するまで同期呼び出し、
#を関係なく、タスクがブロックされているかどうかのが、存在して、同期呼び出しは、所定の位置に待機しています
res_lst.append(RES)
を印刷(res_lst)
印刷(" 実行時間、非ブロッキングプロセスプール:"、time.time() - START_TIME)
S_TIME = time.time()
POOL2 =プール(5) #のプロセスプール決して未来を作成するための5つのプロセスがある5つのタスクの過程にあった
res_lst2 =[]
のために I におけるレンジ(10 ):
RES = pool2.apply(func2を、引数=(I)) #このタスクは、解像度を得るの処理タスクを待つために完了するまで同期呼び出し、またそこにブロックされることがありFUNC2ブロックしないかもしれません
#を関係なくタスクがブロックされているかどうかの存在、同期呼び出しを待っている場所になります
res_lst2.append(RES)
を印刷(res_lst2)
印刷(「プロセス・プールの実行時間をブロックしている:」、time.time() - S_TIME)
#0:9156
#9156:1
#9156:2
#9156:3
#9156:4
#9156:5
#9156:6
#9156:7
#9156:8
#9156:9
#[0、1、4、9、16、25、36、49、64、81]
#の実行時間ブロッキング処理プール:0.515625
#5816:0
#3324:1
#3312:2
#8228: 3
#9976:4
#5816:5
#3324:6
#3312:7
#8228:8
#9:9976
#[0、1、4、9、16、25、36、49、64、81]
#の障害物実行時間のコースプール:10.421875