这是我的例子:
try:
import uasyncio as asyncio
except ImportError:
import asyncio
async def count():
i = 0
while True:
print(i)
i += 1
await asyncio.sleep(1)
async def main():
asyncio.create_task(count())
await asyncio.sleep(5)
asyncio.run(main())
asyncio.run(main())
在常规Python中,我得到:
0
1
2
3
4
0
1
2
3
4
但是,MicroPython会产生以下输出:
0
1
2
3
4
0
5
1
6
2
7
3
8
4
9
因此,第一个任务不会停止,而是在第二个任务的运行时保持运行
显然,这是目前预期的行为:
资料来源:https://github.com/micropython/micropython/issues/7471
因此,一种解决方法是在
asyncio.run
的后续调用之间调用asyncio.new_event_loop
:我相信这是一个缺陷,我已经记录了问题#7471来跟踪它(还有一个解决方法)。感谢您以清晰、可复制的示例报告问题
相关问题 更多 >
编程相关推荐