[英]Should Python process wait for a job forked using `run_in_executor`, although I did not wait for?
假設我們有以下腳本:
def sync_sleep(x):
print("sync_sleep going to sleep")
time.sleep(x)
print("sync_sleep awake")
async def main():
loop = asyncio.get_running_loop()
loop.run_in_executor(None, sync_sleep, 4)
print("main going to sleep")
await asyncio.sleep(1)
print("main awake ")
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
print("main finished")
注意:我故意省略loop.close
。
現在當我執行上面的腳本時:
python script.py
我有以下 output:
sync_sleep going to sleep
main going to sleep
main awake
main finished
sync_sleep awake
我預計在運行腳本后,打印"main finished"
后進程會退出,但直到作業sync_sleep
完成后才退出。 我的意思是,如果我想等待那份工作,我會添加以下行:
loop.run_until_complete(loop.shutdown_default_executor())
我的期望錯了嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.