Windows 和 Unix 之间的 Python3.8 asyncio 行为差异

时间:2021-05-20 20:22:30

标签: unix python-asyncio python-3.8

我正在编写脚本,我将在其中处理要通过 python 处理的大量数据。

我在 windows box 上使用 python3.8 中的 asyncio 编写了一个脚本,该脚本运行良好,但是当我在 python3.8 上的 unix 上执行相同的脚本时,它完成了执行,但最终没有终止程序。似乎它没有释放资源/锁。

当我进一步调试时,发现在 Windows 上 asyncio 使用 ProactorEventLoop 而在 Unix 上它使用 _UnixSelectorEventLoop,但不确定这是否有任何影响。

我不能分享完整的脚本,但它遵循以下结构:

import asyncio

async def myCoroutine():
    print("My Coroutine")

try:
    loop = asyncio.get_event_loop()
    loop.run_until_complete(myCoroutine())
    print("Execution Completed")
finally:
    print("Closing the loop")
    loop.close()
    print("loop Closed")

Output:
Execution Completed
Closing the loop
loop closed

但程序并未终止。

有没有人遇到过类似的问题?任何输入?

提前致谢!!

0 个答案:

没有答案