问题标签 [cprofile]

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 回答
1615 浏览

python - 如何使用 pypy 进行分析(cProfile 不起作用)

pypy 有什么方法可以像运行时那样获得输出python -m cProfile myscript.py吗?

pypy -m cProfile myscript.py正在显示一些随机数(其中一些为负数),显然这是2011 年尚未修复的错误。

0 投票
1 回答
3777 浏览

python - 在 gunicorn 上运行时,如何使用 python 的 cProfile 来分析 django 应用程序

如何使用 python cProfile 在 gunicorn 上运行时分析 Django 应用程序。

我可以在开发模式下进行分析: python -m cProfile -o sample.profile manage.py runserver

但是当它使用 gunicorn 在生产服务器中运行时我该怎么办?

0 投票
2 回答
7534 浏览

python - 为什么 psycopg2 对我这么慢?

我有一个使用 psycopg2 与 postgres 一起工作的程序。但是插入数据库需要太长时间。

以下是使用 cProfile 进行分析的结果。

结论:

这是适用于 psycopg2 的代码。

我究竟做错了什么?

也许你有一些想法为什么需要这么长时间。

0 投票
1 回答
317 浏览

python - cProfile 出卖了我吗?

我想知道为什么我的pyzmqprotobuf基于消息的 ping-pong 比预期的慢得多,所以我曾经cProfile检查过你在这篇文章末尾找到的脚本。

返回

给我(仅用于客户端进程):

奇怪的是:recv()/ send()frompyzmq似乎消耗了大约2700 毫秒,而protobuf只消耗了大约250 毫秒

但这不是真的!

如果我不考虑这protobuf部分,相同的过程在同一系统上仅消耗大约1350 毫秒(-65%)。(我没有添加pyzmq-only 脚本,但您可以只发送几个字节而不是序列化数据)

这些额外的 65% 归因于近 100%pyzmq的实际消耗protobuf

问题:这里发生了什么?我怎样才能以一种指向我的方式protobuf而不是pyzmq在这种情况下来分析我的脚本?

为了重现您必须拥有protobuf-pythonpython-zmq安装的日期。以下是用于此实验的脚本:

test_rpc.py:

rpc.proto:

0 投票
0 回答
629 浏览

python - 如何分析我在图书馆功能上花费的时间?

当我尝试分析一个类时,我无法分解在我自己的每个方法和函数上花费的时间。

例如,使用cProfile,我可以执行以下操作:

我得到了这样的分析:


或者,使用profilehooks我可以执行以下操作:

我得到了这样的分析:

这两种技术都不会显示在库函数中花费了多少时间。我怎样才能得到一个分析,显示我花了多少时间,例如,在numpy.add()

0 投票
2 回答
1263 浏览

python - 运行 cProfile 时语法无效

我试着跑python -m cProfile simple_test_script.py。我在 Windows 7,Python 2.7.10 上。

simple_test_script.py:

我收到此错误:

我阅读了这份文档:https ://docs.python.org/2/library/profile.html

(如果 cProfile 在您的系统上不可用,请使用 profile 而不是 cProfile。)

我尝试了 profile 而不是 cProfile 但同样的错误。有什么线索可以调用 cProfile 吗?

0 投票
0 回答
856 浏览

python - 解释 cProfile 结果:小函数中的总时间与累积时间

我的大部分 Python 程序都花在了一个名为_build_userdbs. 我正在使用很棒的工具SnakeViz,它有助于解释结果。下面有一个截图。

来自 SnakeViz 的可视化

所以现在,在那张照片中,我在_build_userdbs。外面的绿色大圆圈是一个名为的方法_append_record,如您所见,它几乎占据了所有_build_userdbs. 我明白这一点。

但这是令人困惑的部分。内绿圈外的绿圈(占了绝大部分时间)是累计时间_append_record 减去调用函数的累计时间_append_record

从数量上看,_append_record的累计时间为55970 秒。那是内部的绿色圆圈。它的总时间是 54210 秒。那是外面的绿色圆圈。

_append_record,如您所见,如果您在新选项卡中打开该图像,则会调用其他几个函数。那些是:

  • json.dumps()(累计 459 秒)
  • _userdb_scratch_file_path()(累计 161 秒)
  • open(累计 2160 秒)
  • print(小于帧的 0.1%,因此不显示)

好吧,这是有道理的;由于 的累积时间和总时间之间的差异相对较小_append_record,它必须在自己的堆栈帧中进行大量处理,而不是委托给其他函数。但这是函数的主体:

那么所有这些处理在哪里进行呢?这个函数调用开销是造成差异的原因吗?分析开销?这些结果只是不准确吗?为什么不close()调用该函数?

0 投票
2 回答
1661 浏览

python - uWSGI 将其分析器文件放在哪里?

我正在使用打开“--profiler”标志的uWSGI,但我似乎找不到输出文件(如果有的话),并且(就像uWSGI中的许多东西一样)这没有正确记录。

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 投票
2 回答
4633 浏览

python - 带有导入的 cProfile

我目前正在学习如何使用cProfile,我有一些疑问。

我目前正在尝试分析以下脚本:

我执行命令python -m cProfile test_cprofile.py,我得到以下结果:

但是,当我在顶部使用 pylab 导入(例如(import pylab))编辑脚本时,输出cProfile非常大。我试图限制使用的行数,python -m cProfile test_cprofile.py | head -n 10但是我收到以下错误:

有人可以帮助解决与此类似的情况的正确程序,在这种情况下,我们有一个import pylab或另一个模块可以生成如此高的输出信息cProfile吗?