2017-06-15 5 views
4

私はイベントループと非同期機能している場合:関数hellp_worldイベントループに私のすべての機能を含める必要がありますか?

# 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() 

を、イベントループによって呼び出されます。 2番目の関数good_eveningは、同じイベントループにありますか?

ループに2番目の関数を含めるか、最初の関数だけを含める必要がありますか? 例を使用すると、2番目のループを使用してコンテキストを切り替えますか?

答えて

4
  1. それが返すまたは失敗するまではい、run_until_completeは(それはまた、プロセスであなたのスレッドをブロックします)あなたのhello_world未来を実行します。

  2. 2つ目の機能を単独でスケジュールする必要がない限り、2つ目の機能を含める必要はありません。

run_until_completeそれが終了されるまでの未来を実行しますが、それはまた、あなたはそれがrun_util_completeに渡された関数の前に実行されます将来をスケジュールする場合、イベントループはそれほど実行します。

関連する問題