我需要在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中?

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

  1. 是,run_until_complete直到它返回或失败(这也将阻止在这个过程中你的线程)将执行你的hello_world未来。

  2. 除非您想自行计划,否则不必包含第二个函数。

run_until_complete将运行以后,直到它完成,但是,它也将导致事件循环运行,所以如果你计划将来它会传递给run_util_complete函数之前运行。