问题标签 [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.
python - Python脚本长执行函数
您好,我遇到了一个问题,即我的脚本中的一个函数需要很长时间才能执行。所以我正在尝试优化代码,我目前正在为此使用 cProfile 和 Pstats。
当我执行一个函数时,大约需要 0.7 秒到 1+ 秒才能完成。在 Windows 上总是给出最长持续时间的项目是:
在 Linux 上:
所以我会假设它必须对线程做一些事情,但我从不创建任何线程,而我的其他函数几乎不需要时间来完成,比如 ~0.1 秒,所以我的问题是为什么要花这么长时间来执行这段代码:
CProfile 的完整日志: https ://pastebin.com/jAA5FkPZ
完整代码: https ://gist.github.com/Patrick265/592a7dccba4660a4e4210ddd5e9974eb
python - 为什么 pstats.print_callers() 忽略了限制参数?
我正在尝试使用cProfile
和显示结果来分析我的 python 脚本pstats
。特别是,我正在尝试使用该pstats
函数p.sort_stats('time').print_callers(20)
按时间仅打印前 20 个函数,如文档中所述。
我希望只获得前 20 个结果(按时间排序的函数及其调用函数),相反,我得到一个看似未经过滤的 1000 多个函数列表,这些函数完全使我的终端饱和(因此我估计超过 1000 个函数)。
为什么我的限制参数(即20
)被忽略,print_callers()
我该如何解决这个问题?
我已经尝试查找答案,但找不到。我试图创建一个最小的可重现示例,但是当我这样做时,我无法重现该问题(即它工作正常)。
我的分析代码是:
我试图避免发布我的完整代码,所以如果其他人以前遇到过这个问题,并且可以在没有看到我的完整代码的情况下回答,那就太好了。
非常感谢您提前。
编辑 1: 部分输出: