我需要在eventloop中包含我所有的功能吗?
问题描述:
如果我有一个事件循环和异步功能:我需要在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,被称为事件循环。第二个函数good_evening,是否在同一个eventloop中?
我必须在循环中包含第二个函数还是只包含第一个函数? 如果我使用这个例子,第二个使用循环并切换上下文?
答
是,
run_until_complete
直到它返回或失败(这也将阻止在这个过程中你的线程)将执行你的hello_world
未来。除非您想自行计划,否则不必包含第二个函数。
run_until_complete
将运行以后,直到它完成,但是,它也将导致事件循环运行,所以如果你计划将来它会传递给run_util_complete
函数之前运行。