监视异步事件循环

马克·穆纳尼

我正在使用python3编写应用程序,并且第一次尝试使用asyncio。我遇到的一个问题是,一些协程阻塞事件循环的时间长于我的期望。我试图在事件循环的顶部沿线找到一些东西,以显示运行每个协同程序花费的时间是多少时间。如果还不存在任何东西,是否有人知道将钩子添加到事件循环中以便我进行测量的方法?

我尝试使用cProfile提供一些有用的输出,但是我对花费在阻塞事件循环上的时间而不是总执行时间更感兴趣。

米哈伊尔·杰拉西莫夫(Mikhail Gerasimov)

事件循环已经可以跟踪协程是否需要花费大量CPU时间来执行。要查看它,您应该使用方法启用调试模式set_debug

import asyncio
import time


async def main():
    time.sleep(1)  # Block event loop


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.set_debug(True)  # Enable debug
    loop.run_until_complete(main())

在输出中,您将看到:

Executing <Task finished coro=<main() [...]> took 1.016 seconds

默认情况下,它会针对协同程序显示超过0.1秒的警告。它没有记录,但是基于asyncio源代码,看起来您可以更改slow_callback_duration属性来修改此值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RuntimeError:事件循环在异步python中关闭

来自分类Dev

.map异步回调和事件循环

来自分类Dev

RuntimeError:事件循环在异步python中关闭

来自分类Dev

循环-带有异步事件

来自分类Dev

为什么异步I / O需要事件循环

来自分类Dev

如何优雅地异步停止X11事件循环

来自分类Dev

为什么异步事件循环在Windows上会抑制KeyboardInterrupt?

来自分类Dev

多次实例化时,异步锁中的事件循环错误

来自分类Dev

永远运行异步事件循环的pythonic方法是什么?

来自分类Dev

如何优雅地异步停止X11事件循环

来自分类Dev

AngularJs指令监视异步数据

来自分类Dev

Google日历监视事件更新

来自分类Dev

监视事件中的嵌套属性

来自分类Dev

如何监视JDialog的关闭事件?

来自分类Dev

当异步事件循环运行时,为什么不能捕获SIGINT?

来自分类Dev

Django频道错误:您不能在与异步事件循环相同的线程中使用AsyncToSync

来自分类Dev

是否可以从事件循环中返回异步生成器数据?

来自分类Dev

NodeJS中的文件操作是否利用OS异步(轮询?)还是阻塞事件循环?

来自分类Dev

scalaXB 异步调度程序 java.lang.IllegalStateException: 未能创建子事件循环

来自分类Dev

异步期间“运行时错误事件循环已在运行”

来自分类Dev

没有 asyncio 的 Python 3.6 异步等待:如何编写自己最简单的事件循环?

来自分类Dev

异步循环不尊重异步

来自分类Dev

WebForms事件中的异步

来自分类Dev

jQuery异步事件

来自分类Dev

异步事件被触发

来自分类Dev

事件中的异步功能

来自分类Dev

顺序触发异步事件

来自分类Dev

异步运行oncomplete事件

来自分类Dev

异步/等待事件

Related 相关文章

热门标签

归档