2017-06-15 87 views
4

如果我有一個事件循環和異步功能:我需要在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中?

我必須在循環中包含第二個函數還是隻包含第一個函數? 如果我使用這個例子,第二個使用循環並切換上下文?

回答

4
  1. 是,run_until_complete直到它返回或失敗(這也將阻止在這個過程中你的線程)將執行你的hello_world未來。

  2. 除非您想自行計劃,否則不必包含第二個函數。

run_until_complete將運行以後,直到它完成,但是,它也將導致事件循環運行,所以如果你計劃將來它會傳遞給run_util_complete函數之前運行。

相關問題