Python 3.4+до 3.16Асинхронное программированиефункция
asyncio.get_event_loop_policy()
event loop
Deprecated: возвращает глобальную политику цикла событий; с 3.14 устарела, removal in 3.16. Цикл выбирают через loop_factory у asyncio.run().
Синтаксис
policy = asyncio.get_event_loop_policy()
Политика — глобальный объект, решавший, какой цикл создаётся и какой считается текущим; её подменяли, чтобы поставить uvloop или WindowsSelectorEventLoop. Вся система политик устарела в 3.14: вместо глобальной подмены цикл передают явно — asyncio.run(main(), loop_factory=...) (3.12+) или asyncio.Runner(loop_factory=...) (3.11+). С 3.14 вызов даёт DeprecationWarning. Обычная фабрика для loop_factory — asyncio.EventLoop (3.13+), лучший цикл для текущей платформы.
Примеры
# Python 3.11+
import asyncio
async def main():
return type(asyncio.get_running_loop()).__name__
with asyncio.Runner(loop_factory=asyncio.new_event_loop) as runner: # замена политике
print(runner.run(main()).endswith('EventLoop')) # → True
import asyncio
import warnings
with warnings.catch_warnings():
warnings.simplefilter('ignore', DeprecationWarning) # с 3.14 вызов устарел
policy = asyncio.get_event_loop_policy()
loop = policy.new_event_loop()
print(loop.is_closed()) # → False
loop.close()
# Python 3.16+
import asyncio
async def main():
return type(asyncio.get_running_loop()) is asyncio.EventLoop
# политик нет: цикл задают явно, на один запуск
print(asyncio.run(main(), loop_factory=asyncio.EventLoop)) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности