+シングルスレッドの非同期コルーチン(推奨):
いくつかのキーワード-asyncio説明:
-
event_loopイベントループ:満たすイベントは、適切な関数のコルーチンを呼び出すとき、プログラム無限ループ、イベントループへの機能の登録番号を開始
-
コルーチンコルーチン:コルーチンオブジェクトは非同期キーワードを使用して定義された関数を指し、それはすぐに関数呼び出しを実行しませんが、コルーチンオブジェクトを返します。コルーチンのオブジェクトは、イベントループによって呼び出されるイベントループに登録する必要があります。
-
タスクタスクは:コルーチンオブジェクトがネイティブ関数を中断することができるされ、タスクは、タスクの状態の多様を含む、コルーチンにさらにカプセル化されます
-
-
非同期:非同期コルーチンを定義します
- awati:実行を停止するための方法をブロック待っています。
テスト1:
インポートASYNCIO 非同期DEFのdo_something(STH): 印刷(" %Sをやって"%のSTH) 印刷(" DONEを" ) C(= do_something " 食べる")#コルーチンの実行を返さないこのメソッドは、オブジェクトを 印刷する(C) #の結果を SYS :. 1:RuntimeWarning:コルーチン' do_somethingが' 待望ていませんでした <0x0000014EE2EFD1C8 ATコルーチンをdo_somethingオブジェクト>
テスト2:
インポートASYNCIO 非同期DEFのdo_something(STH): 印刷(" やっ%S "%STH) 印刷(" DONE " ) C = do_something(" 食べる")#このメソッドん ループasyncio.get_event_loop =() #は、ループ作成 、ループを.run_until_complete(c)の#のループトリガの実行のCに投げコルーチンオブジェクト #の結果は 食べること DONE
ループによって作成されたテスト3(タスクの使用)。
輸入asyncio 非同期デフdo_something(STH): 印刷(" %sのをやって"%のSTH) プリント(" 済" ) 、C = do_something(" 食べる" ) ループ = asyncio.get_event_loop() タスク = loop.create_task(C) 印刷(タスク)#保留中の未执行 loop.run_until_complete(タスク) プリント(タスク)#は完毕执行終了 #结果 <タスクの保留コロ= <do_something()Cで実行されている:/Users/86155/PycharmProjects/chapter_7/mybs4.py:48 >> 食べやって 行わ /ユーザ/ <タスクが終了コロ= <do_something()Cで定義され、行われ86155 / PycharmProjects / chapter_7 / mybs4.py:48>結果=なし>
によって作成されたテスト4(将来の使用)asynico。
輸入asyncio 非同期デフdo_something(STH): 印刷(" %sのをやって"%のSTH) プリント(" 済" ) 、C = do_something(" 食べる" ) ループ = asyncio.get_event_loop() タスク = asyncio.ensure_future(C) 印刷(タスク) loop.run_until_complete(タスク) プリント(タスク) #结果 <タスク係属コロ= <do_something()Cで動作:/Users/86155/PycharmProjects/chapter_7/mybs4.py:48 >> 食べることをやって 完了 <結果=なし> 48:/Users/86155/PycharmProjects/chapter_7/mybs4.pyタスクコロ= <do_something()Cで定義され、行わ終了しました>
試験5(コールバック)
ASYNCIOインポート
非同期DEFのdo_something(STH):
印刷(STHの%を'%Sがやって')1つの##。
印刷( 'DONE')2 ##
結果#1 STHリターンコールバック関数()
DEF call_bask(タスク):
印刷(タスク.Result())
C = do_something() 'を実行'
ループ= asyncio.get_event_loop()
タスク= loop.create_task(C)#
コールバック関連タスクオブジェクト
task.add_done_callback(call_bask)
loop.run_until_complete(タスク)
#結果
稼働やって
行って
実行しています