【发布时间】:2018-09-06 15:19:06
【问题描述】:
我最近在玩异步代码,当我尝试在 PyCharm 中调试代码时,我看到了一些非常奇怪的行为,我认为这是因为底层架构 import asyncio。 这就是我说的代码。
async def compute(x, y):
print("Compute %s + %s ..." % (x, y))
await asyncio.sleep(1.0)
return x + y
tasks = [compute(x,x) for x in range(10)]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
这很奇怪,因为当我在协程中设置断点时,执行永远不会中断,并且整个代码可以轻松完成运行,除此之外我没有得到事件循环的太多细节(堆栈中的一些混乱除外)。
这是我的问题
- 是否有调试异步代码的标准或一些好的做法?
- 如何查看事件循环的执行流程?
- 为什么它没有在异步函数内部中断?
【问题讨论】:
-
我认为这可能是因为您使用的是
Run而不是Debug。我已经测试过,它运行良好,没有任何问题。它确实触及断点。
标签: python async-await python-asyncio