3.3.2プロセスプール

プロセスプール

プロセスは、プロセスシーケンスのプールが利用でき進まない場合は、内部プロセスは、プロセスシーケンスのプールを維持し、使用された場合、プロセスは、プロセスは、これまで使用可能なプロセスのプール内になるまで、プログラムが待機する、プールのプロセスを取得します。

プロセスプールは二つの方法があります。

  • 適用します
  • 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件の結果を跳びました

おすすめ

転載: www.cnblogs.com/infinitecodes/p/12127578.html