我有以下python程序测试asyncio
:
import asyncio
async def task():
print("doing task")
while True:
print("while true looping")
await asyncio.sleep(2)
def main():
loop = asyncio.get_event_loop()
try:
print("starting loop")
loop.run_until_complete(
asyncio.gather(
task()
)
)
finally:
loop.close()
if __name__ == '__main__':
main()
我期待如下输出:
starting loop
doing task
while true loop
while true loop
...("while true loop every" 2 seconds)
甚至:
doing task
while true loop
starting loop
while true loop
...("while true loop every" 2 seconds)
但相反,该程序挂起并输出任何内容。我想我误解了asyncio
处理循环或asyncio.sleep()
的方式,但我认为await asyncio.sleep()
将控制权传递给调用者,因此另一个print()
可以执行。< / p>
我在这里遇到了什么问题,如何获得所需的输出?
编辑:这似乎是Windows上Git-Bash特有的一个问题,当我使用Windows命令提示符和powershell尝试该程序时,显示了所需的输出。