python3プロセス非同期呼び出しプール

#のコード: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 = []
     のためにレンジ(10 ):
        RES = pool.apply_async(FUNC、引数= (I))  非同期動作、非同期実行中の三つのサブプロセスの最大値とプール内のプロセスの数に応じていくつかのプロセスと異なるタスクを実行することができ、パラメータのいずれかを転送します。
                                          その後、新しいタスクの実行後に結果を返した後、それは、反発プロセスのリストになります
                                          。#のプールは、同じ時間で同時に開いたり終了三つのプロセスを処理しません、という注意
                                          が、プロセスの完全な実装をリリースするだろうしこのプロセスは、新しいタスクを受け取りに行ってきました。
        res_lst.append(RES)
        非同期apply_async使用方法:提出非同期タスクを使用している場合、メインプロセスに参加を使用する必要があり、プロセスタンクのタスクを待つ処理され、結果は、その後のGET使用して収集することができます
        #をそれ以外の場合は、主要プロセスの終了、プロセスがプールを持っていないかもしれませんまた、最後に続い実行するための十分な時間は、一緒に 
    ()pool.close   #はオーバー提出する前には、新しいタスクことを確認するために、タスクを受け取るために、閉じたプロセスプールではなく、プロセスのプール終わり。
    pool.join()  知覚的タスク実行プロセスプールは、新しいタスクが参加する前に、それは近い方法で結合されなければならない上にあるミッションを知覚するために来るために追加されていないがある場合にのみ、終了した
    印刷([r.getを( )のための R  ] res_lst)  結果apply_ayncを取得するために取得し、そう適用した場合、メソッドが同期実行を適用するよう取得し、すぐに結果を得るが、また、取得する必要はありませんでしたしません使用して
    印刷する実行時間は非ブロックプログラムを:、time.time() - START_TIME)

    S_TIME = time.time()
    POOL2 =プール(5)  5工程プロセスプールを作成するために最初から、これは5つのタスクの処理にあった後 
    res_lst = []
     のため I でのレンジ(10 ):
        RES = pool2.apply_async(func2を、引数=(I))
        res_lst.append(RES)
    pool2.close()
    pool2.join()
    印刷([r.get()のための R res_lst])
     を印刷" プログラムの実行時間のブロックがあります:"、time.time() - S_TIME)


8860:0 8860:1つの8860:2 8860:3 8860:4 8860:5 8860:6 8860:7 8860:8 8860:9 [0、1、4、9、 16、25、36、49、64、81] プログラムノンブロッキングの実行時間:0.609375 0:77283668:1 7288:2 8300:3 10168:4 7728:5 3668:6 7288:7 8300:8 10168:9 [0、1、4、9、16、25、 36、49、64、81] 障害物プログラムの実行時間:2.625

 

おすすめ

転載: www.cnblogs.com/lilyxiaoyy/p/10986603.html