1、asyncio实现了两种事件循环对象:
asyncio.SelectorEventLoop:(默认使用)基于Python3.4中添加的selectors模块,它会根据OS自动选择最优的I/Omultiplexing接口,比如在Linux中会使用epoll,在BSD中使用Kqueue。
asyncio.ProactorEventLoop:只能用于Windows系统,Python3.8以上会自动使用IOCP(I/O CompletionPorts)
2、新建事件循环
使用asyncio.new_event_loop()创建并返回一个新的事件循环对象。
3、获取事件循环
使用asyncio.get_event_loop()获取当前的事件循环k
import asyncio
loop = asyncio.get_event_loop()
print(loop)
#在linux中显示如下:#在windows中显示如下:
4、设置当前事件循环
使用asyncio.set_event_loop(loop)设置事件循环。
在python3.7的版本里,asyncio标准库增加了asyncio.WindowsProactorEventLoopPolicy。windows中默认使用asyncio.windows_events._WindowsSelectorEventLoop,只支持sockets,不支持Pipes和subprocesses,我们可以更换为asyncio.windows_events.ProactorEventLoop。
注:Windows上的IOCP是一种真正的异步IO,它比默认的select性能更佳,libuv在Win