我需要在事件循环中包含我的所有功能吗?

I need to include all my function in eventloop?

如果我有事件循环和异步函数:

# asyncio_coroutine_forever.py


import asyncio

async def hello_world():
    print('Hello World')
    await good_evening()


async def good_evening():
    print('Good Evening')


loop = asyncio.get_event_loop()

try:
    loop.run_until_complete(hello_world())
    loop.run_forever()
finally:
    print('closing event loop')
    loop.close()

函数hellp_world被eventloop调用。第二个函数good_evening,是否在同一个事件循环中?

我必须在循环中包含第二个函数还是只包含第一个函数? 如果我使用示例,第二个使用循环并切换上下文?

  1. 是的,run_until_complete 将执行你的 hello_world 未来,直到它 returns 或失败(它也会阻塞进程中的线程)。

  2. 你不必包含第二个函数,除非你想自己安排它。

run_until_complete 会 运行 一个未来,直到它完成但是,它也会导致事件循环到 运行 所以如果你安排一个未来它会 运行 之前传递给 run_util_complete.

的函数