I.プロセスプールとスレッドプール
プロセスプール;数はプロセスの最大数に達していない場合、タスクを実行するアイドルプロセスが存在しない時間を消費によって引き起こさ作成および破壊の工程を減らす、タスクを実行するプロセス・プールの使用から直接作成されたプロセスの数、アイドルプロセスへのアクセスを制限その後、タスクを実行するプロセスのプールに新しいプロセスを作成します。プロセスの数は、プロセスプールの最大数を達成する場合、プロセスをアイドルにはない、それはタスクがアイドルプロセスになった後の処理を待つ必要があります、
タスクを実行するために移動します。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
concurrent.futures インポートProcessPoolExecutor インポート時間 インポートOS #のプロセス/スレッドプールで作成したプロセス池/スレッドの作成が保存されます 。#のプロセスがタスクを実行するためのプロセス/スレッドプール/スレッドを呼び出すことになる #1 /セーブを繰り返しオープンなプロセスをリソーススレッド プールProcessPoolExecutor =() #デフォルトは現在のコンピュータのCPU数です DEF タスク(N-): 印刷(N-、os.getpid()) #を現在のプロセスに見る time.sleepを(2 ) IF __name__ == " __main__ ' : のための I におけるレンジ(20 ): RES = pool.submit(タスク、I)
PS:プロセス・プールが満杯になったとき、不在がプロセスを強制終了、プロセスがミッションのプールを処理するために使用される、新しいプロセスを作成するために行くことはありません。
スレッドプール:プロセス・プールの概念に似ています。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
concurrent.futures インポートThreadPoolExecutor インポート時 #のプロセス/スレッドプールで作成したプロセス池/スレッドの作成が保存されます 。#のプロセスがタスクを実行するためのプロセス/スレッドプール/スレッドを呼び出すことになる #のセーブを繰り返し開いてプロセス/スレッドをリソース プールは= ThreadPoolExecutor(5) #のブラケットは、スレッドプールのスレッドの数を指定するパラメータを渡すことができます #は渡すことはできませんが、デフォルトを通過しないCPUの乗算器の数が5現在のコンピュータである DEF タスク(N-): 印刷(N-) #を見ます現在のプロセス time.sleep(2 ) のための I におけるレンジ(20 ): RES = pool.submit(タスク、I)
非同期プロセス:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
concurrent.futures インポートThreadPoolExecutorは、ProcessPoolExecutor インポート時間 インポートは、OS プールを = ProcessPoolExecutor() #デフォルトは現在のコンピュータのCPU数れる #のプロセス池作成/スレッドの作成は、プロセス/スレッドプールに保存されます 。#プロセス/スレッドを呼び出しますタスクを実行するためのプロセスプール/スレッド #の省は、リソース、プロセス/スレッドの開き繰り返し DEFのタスク(N-)を: 印刷(N-、os.getpid()) #を現在のプロセスに見る time.sleepを(2 ) を返すのnを- ** 2 DEFのcall_back(N-): 印刷(' 非同期タスクを提出しますが、結果を返します:' 、n.result()) "" " 仕事のやり方を提出 同期:リターン・タスク中にその場での結果を提出した後、何の仕事を待たない 非同期:直接次補正の方法によってコードの行タスク非同期の戻り値を提出した後に得られた結果を返すためにタスクを待ちません 「」「 」「」 非同期コールバックメカニズムを:提出した非同期タスクが結果を返すとき、それは自動的にコールバック関数の実行をトリガーする 「」」 がiF __name__ == 『__main__ 』: t_list = [] のための I におけるレンジ(20 ): RES = pool.submit(タスク、I) .add_done_callback(call_back) #ジョブはタスクは結果がすぐにコールバック関数を実行した後、コールバック関数をバインドするために提出された t_list.append(RES)
II。コルーチン
コルーチン:
三.I / Oモデル