Python Glossary English

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Сообщить о неточности