import asyncio
def hello_world(loop):
print('Hello World')
loop.stop()
loop = asyncio.get_event_loop()
# Schedule a call to hello_world()
loop.call_soon(hello_world, loop)
# Blocking call interrupted by loop.stop()
loop.run_forever()
loop.close()
調(diào)用模組級方法 get_event_loop 獲取以全局策略管理的事件循環(huán)對象
并將對象的引用賦予變量 loop
調(diào)用 loop 變量引用的 even loop 對象之 call_soon 方法
callback 參數(shù)設置為 hello_world 函數(shù)
第二參數(shù)設置為變量 loop
該方法安排計劃一有可能即刻調(diào)用 callback
其返回的 asyncio.Handle 實例不留存
調(diào)用 loop 變量引用的 even loop 對象之 run_forever 方法
啟動事件循環(huán)
調(diào)用 loop 變量引用的 even loop 對象之 close 方法
關閉事件循環(huán)
代碼執(zhí)行過程小結:
引入 asyncio 模塊今膊,準備回調(diào)函數(shù)墓律,獲取事件循環(huán)對象,獲得該對象即獲得了 AbstractEventLoop 接口的訪問能力,隨后使用接口安排調(diào)用計劃炒嘲,之后啟動循環(huán),停止循環(huán)匈庭,關閉循環(huán)夫凸。
備注
- 在事件循環(huán)關閉之前,hello_world 被調(diào)用時停止了事件循環(huán)阱持。
- 全局策略是 asyncio 預制實現(xiàn)的夭拌,作為全局范圍內(nèi)的缺省的一個實現(xiàn)了 AbstractEventLoopPolicy 接口的對象。policy-based design 是一種程序設計范式衷咽。事件循環(huán)管理器是以該范式抽象設計的鸽扁,因此其類命名為 class asyncio.AbstractEventLoopPolicy
參考
- asyncio Asynchronous I/O, event loop, coroutines and tasks
- Policy-based design