问题标签 [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 比 CPython 慢得多
我一直在测试我制作的缓存系统。其目的是加速 Django Web 应用程序。它将所有内容存储在内存中。根据 cProfile,我的测试中的大部分时间都花在 QuerySet._clone() 中,结果证明效率非常低(考虑到实现,这实际上并不奇怪)。
我对使用 PyPy 加快速度寄予厚望。我有一台 64 位的机器。然而,在安装了所有必需的库之后,结果证明 PyPy 编译代码的运行速度比常规 Python 代码慢 2.5 倍,而且我不知道该怎么做。该代码受 CPU 限制(绝对没有数据库查询,因此不能选择 IO 限制)。一个测试运行大约 10 秒,所以我想 JIT 应该足够了。我使用的是 PyPy 1.5。注意——我自己没有编译源代码,只是下载了一个 64 位的 linux 版本。
我想知道 CPU 密集型代码在 PyPy 下实际运行速度变慢的频率。希望我做错了什么会阻止 PyPy 以最佳状态运行。
编辑
确切的 cPython 输出:
PyPy 1.5:
蟒蛇 2.7:
python - python如何记忆一个方法
假设我有一种从给定参数创建字典的方法:
我还有另一种方法,每次执行时都会调用 newDict 方法。因此,最后,当我查看我的 cProfiler 时,我会看到如下内容:
当然,我的 newDict 方法称为1785
times。现在,我的问题是我是否可以记住 newDict 方法以减少调用时间?(只是为了确保变量几乎在每次调用中都会发生变化,尽管我不确定它是否对记忆函数有影响)
子问题:我认为17k调用太多了,代码效率不高。但是通过查看统计数据,您是否也可以说明这是正常结果还是我有太多调用并且代码很慢?
python - python cProfile给'int'对象是不可调用的错误
以下脚本运行良好:
当我尝试使用 cProfile 分析我的代码时,例如:
或者
我收到以下错误:
我的脚本在这两种情况下都成功运行,只是在后一种情况下它会阻塞 cProfile。我知道它必须是一些非常琐碎的东西,只是无法确定它。
请帮我解决。谢谢
python - cProfile 将数据保存到文件会导致字符混乱
我在名为 bot4CA.py 的模块上使用 cProfile,所以在控制台中我输入:
模块运行并退出后,它会创建一个名为 thing.txt 的文件,当我打开它时,那里有一些信息,其余的是一堆乱七八糟的字符,而不是我想要的整齐组织的数据文件。有谁知道如何使用 cProfile 并最终得到整齐组织的数据表,就像在命令行上正常使用它时一样,除了在文件中?以下是 .txt 文件中一些数据的示例:
我真正想要的是当您调用 cProfile.run() 时会发生什么,这会打印出一个组织整齐的表格,显示所有函数的执行时间,除了打印之外,保存在一个文件中,因为这个程序相当大并且运行很多的功能。
python - Python 的 cProfile 无法识别函数名称
我在一个名为电子邮件的应用程序中有一个功能,我想对其进行分析。当我尝试做这样的事情时,它会爆炸
当我运行此管理命令时,它会引发以下错误:
我在这里想念什么?cProfile 如何评估字符串(在全局/本地命名空间中查找函数名称)?
python - 使用广泛重用的装饰器分析系统
我们的代码库有一些被广泛使用的装饰器。
当我创建运行时配置文件时,调用图的很大一部分看起来像一个沙漏;许多函数调用一个函数(装饰器),然后该函数调用许多函数。这是一个比我想要的不太有用的配置文件。
有没有办法纠正这种情况?移除装饰器不是一种选择;它提供了必要的功能。
我们考虑过事后从cProfile数据中手动剥离decorator,但这似乎不太可能,因为数据被汇总成caller->callee关系,破坏了caller->decorator->callee关系。
python - Python分析器测量的CPU时间与实际用户和系统时间之间的关系是什么?
使用 python 内置分析器和在一个处理器中运行的脚本(并且没有多线程)
分析器报告的 CPU 时间是 345.710 CPU 秒
真实时间、用户时间和系统时间是:
如您所见,CPU 时间几乎是实时的(345.710 = 5m45.710s)。
那么,鉴于该结果,是否可以假设分析器报告的 CPU 时间包括其他进程使用的时间片和进程阻塞的时间?即探查器 CPU 时间不是进程时间(用户 + sys),而是挂钟时间,正如 “真实”、“用户”和“系统”在时间输出中的含义是什么(1)中解释的那样?
非常感谢提前
python - cProfile seems to override the normal value of `__file__`, how adapt?
I have a program that relies on the __file__
built-in global to provide the path to data associated with the program, as in path_to_stuff = os.path.join(os.path.dirname(__file__),'stuff')
. The problem is that when I run this with python -m cProfile myprog
, the value of __file__
is no longer the path to myprog
but rather (apparently) the path to the cProfile module, where my stuff definitely isn't.
I've read the manual and searched here and don't see anything about this. Is there a way to either (a) get cProfile to leave __file__
alone or (b) know at runtime that I'm running under cProfile so I could initialize the path with a literal string in this special case?
Edit: or, I guess, (c), is there a better way to find a dir that will always be right next to the program.py?
python - 分析 Python 脚本时按 percall 对 cProfile 输出进行排序
我在用着python -m cProfile -s calls myscript.py
python -m cProfile -s percall myscript.py
不起作用。
Python 文档说“在 Stats 文档中查找有效的排序值。”:http://docs.python.org/library/profile.html#module-cProfile,我找不到。
python - 有效的 Cython cProfiling 是否意味着编写许多子函数?
我正在尝试使用 Cython 优化一些代码,但cProfile没有提供足够的信息。
为了做好分析,我应该创建许多子例程 func2, func3,... , func40 吗?
请注意下面我有一个函数func1
in mycython.pyx
,但它有许多 for 循环和内部操作。但是 cProfile 没有告诉我这些循环的统计信息。