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()
调用模组级方法 get_event_loop 获取以全局策略管理的事件循环对象
并将对象的引用赋予变量 loop
调用 loop 变量引用的 even loop 对象之 call_soon 方法
callback 参数设置为 hello_world 函数
第二参数设置为变量 loop
该方法安排计划一有可能即刻调用 callback
其返回的 asyncio.Handle 实例不留存
调用 loop 变量引用的 even loop 对象之 run_forever 方法
启动事件循环
调用 loop 变量引用的 even loop 对象之 close 方法
关闭事件循环
代码执行过程小结:
引入 asyncio 模块,准备回调函数,获取事件循环对象,获得该对象即获得了 AbstractEventLoop 接口的访问能力,随后使用接口安排调用计划,之后启动循环,停止循环,关闭循环。
备注
- 在事件循环关闭之前,hello_world 被调用时停止了事件循环。
- 全局策略是 asyncio 预制实现的,作为全局范围内的缺省的一个实现了 AbstractEventLoopPolicy 接口的对象。policy-based design 是一种程序设计范式。事件循环管理器是以该范式抽象设计的,因此其类命名为 class asyncio.AbstractEventLoopPolicy
参考
- asyncio Asynchronous I/O, event loop, coroutines and tasks
- Policy-based design