如果我有事件循环和异步函数:
# 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是否在同一个事件循环中?
我是否必须在循环中包含第二个函数或仅包含第一个函数? 如果我使用这个例子,第二个使用循环并切换上下文?
答案 0 :(得分:4)
是的,run_until_complete
将执行您的hello_world
未来,直到它返回或失败(它还会在此过程中阻止您的主题)。
除非您想自行安排,否则您不必包含第二个功能。
run_until_complete
将会运行一个未来,直到它完成,但它也会导致事件循环运行,因此如果您安排未来,它将在函数传递给run_util_complete
之前运行。