日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

asyncio call_at,call_soon和call_later用法

發布時間:2024/3/12 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asyncio call_at,call_soon和call_later用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# coding=utf-8import asyncio import functools import logginglogging.basicConfig(level=logging.INFO,format="%(asctime)s [*] %(process)d %(processName)s %(message)s" )def callback01 (args, *, kwargs="defalut"):print(f"\t普通函數做為回調函數,獲取參數:{args},{kwargs}")def callback02 (n):print(f"\t callback02 {n} invoked")def callback03 (n, loop):print(f"\t callback03 {n} 運行時間點{loop.time()}")async def result1 ():print("\t這是result1協程")return "result1"async def result2 (arg):print("\t這是result2協程")return f"result2接收了一個參數,{arg}"async def main (loop):print("1.主協程------------------------------------------------")print("\t等待result1協程運行")res1 = await result1() # 異步阻塞(等待另一個協程)print("\t等待result2協程運行")res2 = await result2(res1) # 異步阻塞(等待另一個協程)await asyncio.sleep(1)print("2.注冊callback01----------------------------------------")loop.call_soon(callback01, 1)# 改變函數的默認參數wrapped = functools.partial(callback01, kwargs="not defalut")loop.call_soon(wrapped, 2)await asyncio.sleep(0.1)print("3.注冊callback02----------------------------------------")loop.call_later(0.2, callback02, 1) # 延時去調用一個函數loop.call_later(0.1, callback02, 2) # 第一個參數越小,越先執行。loop.call_soon(callback02, 3) # 會在call_later之前執行,和它的位置在哪無關await asyncio.sleep(1)print("4.注冊callback03----------------------------------------")now = loop.time()print("\t 當前的內部時間(循環時間):", now)loop.call_at(now + 0.1, callback03, 1, loop) # 第一個參數的含義代表的是一個單調時間loop.call_at(now + 0.2, callback03, 2, loop)loop.call_soon(callback03, 3, loop)await asyncio.sleep(1)return (res1, res2)if __name__ == '__main__':loop = asyncio.get_event_loop()try:print("進入事件循環...")result = loop.run_until_complete(main(loop))print(f"獲取返回值:{result}")finally:print("關閉事件循環...")loop.close()

輸出:

進入事件循環... 1.主協程------------------------------------------------等待result1協程運行這是result1協程等待result2協程運行這是result2協程 2.注冊callback01----------------------------------------普通函數做為回調函數,獲取參數:1,defalut普通函數做為回調函數,獲取參數:2,not defalut 3.注冊callback02----------------------------------------callback02 3 invokedcallback02 2 invokedcallback02 1 invoked 4.注冊callback03----------------------------------------當前的內部時間(循環時間): 363699.437callback03 3 運行時間點363699.437callback03 1 運行時間點363699.546callback03 2 運行時間點363699.625 獲取返回值:('result1', 'result2接收了一個參數,result1') 關閉事件循環...

總結

以上是生活随笔為你收集整理的asyncio call_at,call_soon和call_later用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。