问题标签 [pstats]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2653 浏览

python-2.7 - 尝试将 cProfile 信息写入文件时出错

我正在尝试加载 cProfile 配置文件,进行一些排序和微调,然后将结果输出到文件中。根据文档,我想我可以简单地传递一个文件对象,该print_stats函数将重定向到该流。

这是我尝试使用的代码:

这是由此产生的错误:

我还应该补充一点,当我不将对象传递给流参数时,输出在终端中显示正常。

0 投票
0 回答
582 浏览

python - 忽略 cProfile 日志中的函数调用

我知道可以使用 获取特定模块的函数调用频率pstats.print_stats('python_script.py:'),但是我想打印不涉及一组函数的分析程序中所有调用函数的频率的报告。

例如,假设我有function1, function2, function3, and function4(假设这个列表要大得多)并且我想打印每个函数被调用的次数,只要它不是function3。是否可以创建要忽略的函数列表并将其传递给pstats模块以及我正在分析的文件?

特别是,我对不包括前面提到的集合的所有函数的调用次数感兴趣。我可能会编写一个脚本来解析完整的函数列表并忽略该集合,但我觉得 pstats 模块中可能有更简单的方法。

0 投票
0 回答
51 浏览

python - Python:Pstats 似乎忽略了在 fortran 例程中花费的时间

我想分析一个调用 fortran 例程的 python 代码。我使用这个 PSTATS,但如下例所示,PSTATS 没有考虑在 fortran 例程中花费的时间。

Fortran 模块 (mod_fortran.f90):

调用 fortran 模块 (test_fortran_pstats.py) 的 Python 脚本:

用于打印分析统计信息的 Python 脚本 (analysis_pstats.py):

教程(编译提交):

结果:

Pstats 只计算 0.180 秒,而 Fortran 例程在 10 秒内“休眠”。

0 投票
3 回答
11161 浏览

python - 如何离线分析使用 pstats.dump_stats(filename) 创建的文件?

我基本上做了以下事情:

所以现在我有一个名为“stats.dmp”的文件离线存储。

如何使用 pstats 分析此文件以供人类使用?

提前致谢。

0 投票
1 回答
1982 浏览

python - 在 Python 中使用 pstats 和 cProfile。如何让数组工作得更快?

这是我对代码的第一次优化,我对此感到很兴奋。阅读一些文章,但我仍然有一些问题。

1)首先,在我下面的代码中,什么需要这么多时间?我认为这里是数组:array.append(len(set(line.split())))。我在网上读到 python 中的列表工作得更快,但我没有看到在这里使用列表。有人知道如何改进吗?

2)我还缺少其他改进吗?

3)此外,在线它说 for 循环会大大降低代码速度。这里可以改进吗?(我想用 C 编写代码是最好的,但是 :D )

4)为什么人们建议总是看“ncalls”和“tottime”?对我来说,“percall”更有意义。它告诉你你的函数或调用有多快。

5)在正确答案B类中,他应用了列表。他有吗?对我来说,我仍然看到一个数组和一个 FOR 循环,它们应该会减慢速度。 增长 numpy 数值数组的最快方法

谢谢你。

新的 cProfile 结果:

新代码:


OLD cProfile 结果:551211 次函数调用在 13.195 秒内排序:内部时间
ncalls tottime percall cumtime percall 文件名:lineno(function) 78744 10.193 0.000 10.193 0.000 {numpy.core.multiarray.array}

旧代码:

0 投票
1 回答
2641 浏览

python - 仅分析用户定义的函数 pstats

我正在尝试使用 pstats 模块中的 Stats() :

但是,当我执行 print_stats 时,我也会收到对库函数的调用。有没有办法可以过滤这些以仅打印对我的函数的调用?

0 投票
0 回答
25 浏览

python - Flask 分析错误:分析器不可用,因为未安装 profile 或 pstat

根据此处的讨论,我正在尝试在我的网站上运行分析过程,但遇到了此错误。这是完整的堆栈跟踪:

起初我认为这是 Windows 错误之一,我尝试在我的 Mac 上做同样的事情。同样的错误。

唔。我在代码中找到了负责任的导入语句werkzeug

这会导致稍后在第 79 行出现故障:

所以我想这意味着我缺少这些模块之一?但它们是核心 Python 模块AFAIK!

我打开一个IPython控制台,启动到负责的conda虚拟环境,果然:

在此处输入图像描述

这是怎么回事?

0 投票
1 回答
605 浏览

python - Python cProfile - 修饰函数使配置文件可视化变得模糊

我有一个基类,@classmethod它充当许多后代类中大量方法的装饰器。

当我分析此代码并通过树视图查看它时,我看到some_decorator来自数百个不同地方的数千个调用。

然后我看到some_decorator回电到数百个它刚刚来自的地方。

这很烦人,我还没有找到解决方法,既不是通过更改代码也不是通过其他方式分析。(使用 gprof2dot atm:How can you get the call tr​​ee with python profilers?

想法?

0 投票
1 回答
257 浏览

python - 以编程方式访问 cProfile 数据

我需要捕获一些 python 分析数据并生成报告。

虽然这个组件的大部分运行 Python 3.5,为了支持几个遗留模块,我们仍然有部分系统运行 2.7。

在这种情况下,3.5 通过调用 2.7subprocess.Popen()并同时捕获stdoutstderr(分别用作数据和日志)。

我能够在 2.7 进程中运行 cProfile,将结果数据写入磁盘,然后将其加载到 pStats 中。

此时,我可以排序/过滤并打印到控制台。不幸的是,由于stdout/stderr已经在使用中,这并没有多大帮助。

我还希望有机会格式化、注入源代码片段等。

所以我需要以编程方式查询 pStats 类,建立一个合适的报告,然后将它存储在我们的消息传递系统中。

除了写入控制台之外,该文档似乎没有说明提取数据的任何方法。

.stats属性看起来很有希望,但仅包含一个省略大量信息的 3 元组数组。

如何以编程方式浏览 pStats 中的数据?

具体来说,我想至少提取:

  • 源文件/行号
  • 累计时间
  • 独家时间
0 投票
0 回答
62 浏览

python - Python PyProf2CallTree 错误

我正在尝试在 Windows 上使用以下命令从我的脚本内部运行 PyProf2CallTree:

这是我收到的错误: 在此处输入图像描述