问题标签 [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.
python - 如何使用 pypy 进行分析(cProfile 不起作用)
pypy 有什么方法可以像运行时那样获得输出python -m cProfile myscript.py
吗?
pypy -m cProfile myscript.py
正在显示一些随机数(其中一些为负数),显然这是2011 年尚未修复的错误。
python - 在 gunicorn 上运行时,如何使用 python 的 cProfile 来分析 django 应用程序
如何使用 python cProfile 在 gunicorn 上运行时分析 Django 应用程序。
我可以在开发模式下进行分析:
python -m cProfile -o sample.profile manage.py runserver
但是当它使用 gunicorn 在生产服务器中运行时我该怎么办?
python - 为什么 psycopg2 对我这么慢?
我有一个使用 psycopg2 与 postgres 一起工作的程序。但是插入数据库需要太长时间。
以下是使用 cProfile 进行分析的结果。
结论:
这是适用于 psycopg2 的代码。
我究竟做错了什么?
也许你有一些想法为什么需要这么长时间。
python - cProfile 出卖了我吗?
我想知道为什么我的pyzmq
和protobuf
基于消息的 ping-pong 比预期的慢得多,所以我曾经cProfile
检查过你在这篇文章末尾找到的脚本。
返回
和
给我(仅用于客户端进程):
奇怪的是:recv()
/ send()
frompyzmq
似乎消耗了大约2700 毫秒,而protobuf
只消耗了大约250 毫秒。
但这不是真的!
如果我不考虑这protobuf
部分,相同的过程在同一系统上仅消耗大约1350 毫秒(-65%)。(我没有添加pyzmq
-only 脚本,但您可以只发送几个字节而不是序列化数据)
这些额外的 65% 归因于近 100%pyzmq
的实际消耗protobuf
。
问题:这里发生了什么?我怎样才能以一种指向我的方式protobuf
而不是pyzmq
在这种情况下来分析我的脚本?
为了重现您必须拥有protobuf-python
和python-zmq
安装的日期。以下是用于此实验的脚本:
test_rpc.py:
rpc.proto:
python - 如何分析我在图书馆功能上花费的时间?
当我尝试分析一个类时,我无法分解在我自己的每个方法和函数上花费的时间。
例如,使用cProfile
,我可以执行以下操作:
我得到了这样的分析:
或者,使用profilehooks
我可以执行以下操作:
我得到了这样的分析:
这两种技术都不会显示在库函数中花费了多少时间。我怎样才能得到一个分析,显示我花了多少时间,例如,在numpy.add()
?
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 吗?
python - 解释 cProfile 结果:小函数中的总时间与累积时间
我的大部分 Python 程序都花在了一个名为_build_userdbs
. 我正在使用很棒的工具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()
调用该函数?
python - uWSGI 将其分析器文件放在哪里?
我正在使用打开“--profiler”标志的uWSGI,但我似乎找不到输出文件(如果有的话),并且(就像uWSGI中的许多东西一样)这没有正确记录。
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}
旧代码:
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
吗?