Python Glossary English

Python 3.4+Асинхронное программированиефункция

asyncio.new_event_loop()

event loop

Создаёт новый цикл событий. Не делает его текущим и не закрывает сам — обычно вместо неё берут asyncio.run() или asyncio.Runner.

Синтаксис

loop = asyncio.new_event_loop()

Созданный цикл живёт, пока его не закрыть: без loop.close() остаются открытые дескрипторы и ResourceWarning. Он не становится текущим, поэтому get_event_loop() его не увидит без set_event_loop(). asyncio.run() делает всё это сам: создаёт, запускает, дожидается асинхронных генераторов, гасит пул потоков и закрывает цикл. Ручной цикл нужен, например, в отдельном потоке с долгоживущим циклом.

Примеры

import asyncio
async def main():
    await asyncio.sleep(0.01)
    return 'готово'
loop = asyncio.new_event_loop()
try:
    print(loop.run_until_complete(main()))  # → готово
finally:
    loop.close()  # закрыть обязательно
print(loop.is_closed())  # → True

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности