除了标准库中包含的工具之外,Linux 上的 Python 还存在哪些分析工具?

Posted

技术标签:

【中文标题】除了标准库中包含的工具之外,Linux 上的 Python 还存在哪些分析工具?【英文标题】:What profiling tools exist for Python on Linux beyond the ones included in the standard library? 【发布时间】:2009-10-22 14:29:42 【问题描述】:

我一直在使用 Python 的内置 cProfile 工具并取得了相当大的成功。但我希望能够访问更多信息,例如我等待 I/O 的时间(以及我等待的 I/O 类型)或我有多少缓存未命中。除了您的基本时间命令之外,是否有任何 Linux 工具可以帮助您解决这个问题?

【问题讨论】:

【参考方案1】:

我不确定 python 是否会提供您正在寻找的低级信息。不过,您可能想查看 oprofile 和latencytop。

【讨论】:

【参考方案2】:

如果您想确切地知道您在等待什么,以及大约等待的时间百分比,this 会告诉您。但它不会告诉您其他信息,例如缓存未命中或内存泄漏。

【讨论】:

有趣的方法!有点像自己动手的采样分析器。 @Jason:是的,在我看来,更好。证据就在布丁中:***.com/questions/926266/… Profilers 可以做得更好,如果他们不仅对堆栈进行采样,而且 1) 保留样本,2) 向您显示按包含它们的样本百分比排序的语句(而不是函数)(忽略递归),以及 3) 让您探索有代表性的样本,而不仅仅是总结。 ... 我还没有看到一个案例、故事或场景,其中使用分析器解决了一系列性能问题,从而显着提高了速度。人们似乎对思考数字、探索图表、在耗时的函数中翻找以及发现和解决可能的一个问题感到满意。 @Mike Dunlavey:所以你的意思是基本上像每个优秀的商业分析器一样操作。 (Quantify 和 vTune 都向您显示单独的语句,如果您不介意吃掉大量的记忆,可以保留样本) @Nick:从另一端看。假设你有一个无限循环,或者几乎是这样。您需要多少随机时间堆栈样本才能找到它?一,对吧?因为目标是在它做不应该做的事情时抓住它,并找出那是什么。测量不是对象。假设它只需要两倍的时间,它需要多少个样本?基本上,如果您看到它在做一些它实际上不需要做的事情,只需 两个 样本,您就可以修复它以获得良好的加速。 (这不会揭示一小部分问题。大多数,它会。)

以上是关于除了标准库中包含的工具之外,Linux 上的 Python 还存在哪些分析工具?的主要内容,如果未能解决你的问题,请参考以下文章

标准模板库

如何从模块外部读取与 __main__.py 相同模块中包含的文件?

使用 Rcpp 中包含的标准

如何使用 Eclipse 中包含的外部库创建 jar?

如何打开框架中包含的视图控制器作为 iOS 的静态库?

我的 HTML 中包含的 JavaScript 库可以使用我的 cookie 会话向我的网站发出请求吗?