1.テスト学習
(2)シングルスレッド:
時間インポートスリープ インポート時間 :DEF要求(URL) プリント(' 正在请求:' 、URL) 睡眠(2 ) プリント(' 下载成功:' 、URL) のURL = [ ' www.baidu.com '、' WWW。 sogou.com ' ' www.goubanjia.com " ] 開始 = time.time() のための URL でのURL: リクエスト(URL) プリント(time.time() -startを)
テスト結果:6秒以上
要求している:www.baidu.comは 成功をダウンロード:www.baidu.comを 要求している:www.sogou.comは 成功をダウンロード:www.sogou.comを 要求している:www.goubanjia.comは 成功をダウンロード:www.goubanjia.com 6.001747369766235
(2)オープンスレッドプール:テストの結果は、2秒以上であります
以下からの時間の輸入睡眠 インポート時 からmultiprocessing.dummyインポートプール :DEF要求(URL) プリント(' 正在请求:' 、URL) 睡眠(2 ) 印刷(' 下载成功:' 、URL) のURLを = [ " www.baidu。 COM ' ' www.sogou.com ' ' www.goubanjia.com ' ] 開始 = time.time() プール =プール(3 ) pool.map(リクエスト、URLの) プリント(time.time() -start)
テスト結果:
要求している:www.baidu.comが 要求されている:www.sogou.comを 要求している:www.goubanjia.comは 成功をダウンロード:www.goubanjia.comは 成功をダウンロード:www.sogou.comは 成功をダウンロード:www.baidu.com 2.034695625305176
(3)ブラインドは、プログラムにマルチスレッド、マルチプロセスを使用できるかどうか?
推奨:(人のいない多くて、クロール多くのデータが使用される最高の効率、)シングルスレッドの非同期コルーチン+
下記をご覧
コルーチン(行くとpythonのユニークなコンセプト),,コルーチンは非常に高いメモリを占有しません。
リーダーシップは気のデータのうち、クロールされます。
主要求または学習モジュール。これらの概念を学習以下の概念、モーメントがコードに反映されます
event_loop:イベントループ、無限ループに相当する、我々は特定の条件が満たされたときに、関数が周期的に実行され、イベントループにいくつかの特殊機能レジスタ(配置)を置くことができます。手順は、最初から最後まで、設定された順序で実行され、
実行の数は正確に設定されています。プロセスの一部が比較的長い時間のかかるを実行するためにバインドされている非同期プログラムを書くとき、私たちは、プログラムの起動と最初の実行中の別の一部となるよう、現在の制御プログラムを聞かせて、それがバックグラウンドで実行できるようにする必要があります。プログラムが完了するの背後で実行されている、とき
だけでなく、タイムリーに通知主な作業の必要ができ、次のステップを完了しているが、このプロセスに要する時間は不確定で、メインプログラムは、メッセージタスク完了の受信時に、継続的な監視状態を必要とします、我々は次のステップを開始します。それは、この連続ループモニタです。 コルーチン:中国語の翻訳がコルーチンと呼ばれているが、我々は多くの場合、Pythonでイベントループにコルーチンオブジェクトを登録することができ、協会のオブジェクト型に代わってプロセスを指し 、それはサイクルイベントを呼び出します。私たちは、使用できる非同期を呼び出すとき、すぐに実行されませんメソッドを定義するキーワードを、 しかしコルーチンオブジェクトを返します。 タスク:さらにコルーチンオブジェクトにカプセル化されたタスクは、各タスクのステータスを含んでいます。 実際には、実行するために実行したりしないように今後の課題に代わって、タスクには本質的な違いはありません:未来。 また、我々はまた、知っておく必要がある非同期を / 待つのPythonからであるキーワード、3.6のみ、特にコルーチンを定義するために、登場しました。ここで、非同期は、コルーチンを定義するのawaitメソッド保留中の実行を阻止するために。