プロセスプール
プロセスは、プロセスシーケンスのプールが利用でき進まない場合は、内部プロセスは、プロセスシーケンスのプールを維持し、使用された場合、プロセスは、プロセスは、これまで使用可能なプロセスのプール内になるまで、プログラムが待機する、プールのプロセスを取得します。
プロセスプールは二つの方法があります。
- 適用します
- apply_async
シリアルの例
プールからのインポートマルチプロセッシングプロセス のインポート時、OS DEF F(I): time.sleep(1) 印刷( 'プロセス:'、os.getpid())#2各プロセスの出力電流のプロセスID リターンI 100 + DEFバー(アルギニン): 印刷(、%os.getpidのArg() '!S%のプロセスの実行が行われている') IF __name__ == '__main__': (5)。5まで可能にしながら、P =プールが1位、プール、池を開始作業工程 レンジ(10)におけるIのため: プロセスが池シリアルによって行わ#apply()メソッド、使用してp.apply(FUNC = F、引数=(I)) を印刷( '末端')を3#。 P.近いです()
結果
プロセス:3804 プロセス:11880 プロセス:3740 プロセス:128 プロセス:644 プロセス:3804 プロセス:11880 プロセス:3740 プロセス:128 プロセス:644 終了
パラレル例
プールからのインポートマルチプロセッシングプロセス のインポート時、OS DEF F(I): time.sleep(1) 印刷( 'プロセス:'、os.getpid())#2.1出力電流のプロセス各プロセスIDの リターンI 100 + DEFバー(アルギニン): (、'!S%プロセスの実行が行われている' Argのos.getpid%())コールバックを実行する#2.2を印刷 IF __name__ == '__main__': (5)。アップP =プール1位プールを開始し、池5プロセスを作動可能にしながら、 範囲内のiについて(10): p.apply_async(FUNC = F、引数=(I)、コールバック=バール) #利用apply_async()メソッド、並列処理池行う プリント( 'エンド「)#。3 p.close() p.join()
結果
終了 プロセス:プロセス:14420 7708 プロセス%sの実行が行われます!101 プロセス%sの実行が行われます!100 プロセス:14936 プロセス%sの実行が行われます!102の プロセス:9632Process: 14096 プロセス%sの実行が行われます!103 プロセス%sの実行が行われます!104 プロセス:プロセス:14420 7708 プロセス%sの実行が行われます!105 プロセス%sの実行が行われます!106 プロセス:14936 プロセス%sの実行が行われます!107 プロセス:プロセス:9632 14096の プロセス%sの実行が行われます!108 プロセス%sの実行が行われます!109
それぞれの5件の結果を跳びました