Python 3.13+Асинхронное программированиепонятие
asyncio.EventLoop
event loop
Псевдоним самого подходящего цикла событий для текущей ОС: SelectorEventLoop на Unix и ProactorEventLoop на Windows. Появился в Python 3.13.
Синтаксис
asyncio.run(main(), loop_factory=asyncio.EventLoop)
Это не новый цикл, а имя для того, что asyncio.run() и так создаёт по умолчанию; проверка asyncio.EventLoop is asyncio.SelectorEventLoop на Linux даёт True. Нужен он там, где цикл передают явно — asyncio.run(main(), loop_factory=asyncio.EventLoop) или asyncio.Runner(loop_factory=...), — и он заменяет устаревшую с 3.14 возню с политиками циклов. В Python 3.11 и 3.12 имени нет — будет AttributeError.
Примеры
import asyncio
async def main():
await asyncio.sleep(0.01)
return type(asyncio.get_running_loop()).__name__
name = asyncio.run(main(), loop_factory=asyncio.EventLoop)
print(name) # → ? SelectorEventLoop на Linux и macOS, ProactorEventLoop на Windows
print(issubclass(asyncio.EventLoop, asyncio.AbstractEventLoop)) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности