、asyncio
1.python3.4は、非同期IOのためのビルトインサポートの標準ライブラリに導入されて
自体2.asyncioメッセージループであります
3.ステップ:
(1)メッセージループを作成します
(2)コルーチンを導入
(3)閉じます
例4:
輸入スレッド #非同期IOパッケージのご紹介 輸入asyncio #使用コルーチン @ asyncio.coroutine デフ)(ハロー: 印刷(" Hello Worldの!(%s)は"%のthreading.current_thread()) 印刷(" スタート......(%s)は"%のthreading.current_thread()) 収量 から asyncio.sleep(5 ) 印刷(" 完了.....(%s)は"%のthreading.current_thread()) 印刷(" こんにちは、再び!(%s)は"%のthreading.current_thread()) #1 開始メッセージループ ループ = asyncio.get_event_loop() #タスクの定義 タスクを = [こんにちは()、こんにちは()] #ASYNCIO使用して待ち待ちのタスクが終了します loop.run_until_complete(asyncio.wait(タスク)) #閉じるメッセージループ loop.close()
二、asyncioと待ちます
より良い非同期IOを表現するために1
2.python3.5導入
コードより簡潔コルーチンを作るために3。
4.使用して、簡単に交換することができます
(1)は、非同期の@ asyncio、コルーチンに置き換えられます
(2)から待つ収率で置き換えられています
この構文上記によれば、前の例を書き換えることができ、結果が完全に一致しています
三、aiohttp
シングルスレッドの同時実行IOを達成1.asyncio、クライアントは有用ではありません
HTTPはIO操作であるため、2は、サービス側で+コルーチンをasyncioことができます
3.asyncio実現TCP、UDP、SSLプロトコル、等
4.aiohttpはasyncioを達成するために、HTTPベースのフレームワークであります
5.例:
輸入asyncio aiohttp インポートウェブ 非同期デフ指数(要求): 待つasyncio.sleep( 0.5 ) 返す web.Response(ボディ= B " <H1>インデックス</ H1> " ) 非同期デフこんにちは(リクエスト): 待つasyncio.sleep( 0.5 ) テキスト = " <H1>こんにちは、%sの!</ H1> " request.match_info%[ " 名前" ] 戻り web.Response(本体= text.encode(" UTF-8 " )) 非同期デフのinit(ループ): アプリ = web.Application(ループ= ループ) app.router.add_route(" GET "、" / " 、インデックス) app.router.add_route(" GET "、" / HELLP / {名前} " 、ハロー) SRVは = loop.create_server(app.make_handler()、待つ" 127.0.0.1 "、8000 ) 印刷(" ://127.0.0.1:サーバがHTTPで開始8000 ... " ) リターンSRV ループ = asyncio.get_event_loop() loop.run_until_complete(INIT(ループ)) loop.run_forever()
三、現在、未来
新しいライブラリ1のpython3
2.コンセプトは、他の言語でのスレッドプールに似ています
3.真の並列マルチプロセッシング・コンピューティング(もちろんCPUは、私たちに多核が必要です)
4.コア原則:複数のPythonインタプリタを実装する子プロセスとして
これによりプログラムのpythonは、マルチコアCPUの実行速度を改善するために利用することができる作ります。子供がメインインタプリタから分離するので、彼らのグローバルインタプリタロックはまた、互いに独立しているため、それぞれの子は完全なCPUコアを使用することができます
5.concurrent.futures.Executor
(1)ThreadPoolExecutor
(2)ProcessPoolExecutor
(3)それらのニーズに実行する場合
(4)提出(FN、引数、kwargsから)
FN:機能は非同期で実行します
引数、kwargsからパラメータ
インポート時 concurrent.futuresのインポートThreadPoolExecutor デフreturn_future(MSG): time.sleep( 3 ) リターンMSG #スレッドプールを作成し 、プール = ThreadPoolExecutorを(max_workers = 2)位のために働く2件のスレッドがあり、2であります #2タスク参加スレッドプールに F1 = pool.submit(return_future、「こんにちは」) F2 = pool.submit(return_future、" 世界" ) time.sleep( 1 ) #待ちを終了します 印刷(f1.done()) time.sleep( 3 ) 印刷(f2.done()) #の結果 印刷(f1.result()) 印刷(f2.result())
第五に、ソースコード
d28_1_asynchronization_examples.py
https://github.com/ruigege66/Python_learning/blob/master/d28_1_asynchronization_examples.py
2.CSDNます。https://blog.csdn.net/weixin_44630050(西6月6月ムードが知らない - ルイを)
3.パークブログます。https://www.cnblogs.com/ruigege0000/
4.マイクロチャネル公共数に焦点を歓迎:フーリエ変換は、ビッグデータの学習教材を取得するには、唯一の交流を学ぶために、舞台裏の返信「贈り物」をパブリック個人番号を変換します