Nic*_*ick 19 python profiler pycharm
我正在运行一个相对复杂的python程序,其中有一个montecarlo模拟,它占用了大部分时间.我想找出它使用最多资源的部分,以便我可以更快地完成它.
我正在使用PyCharm Professional版本并尝试使用分析器,但结果只是我从未听说过的大量无关功能.
问题:我是否可以使用可以提供有意义结果的优秀分析器,以便我可以看到哪个函数或关键字在我的montecarlo模拟中使用了最多的资源?
sha*_*een 16
根据您的需求和您的python版本,也许您想要使用像hotshot这样的东西.https://docs.python.org/2/library/hotshot.html
编辑:
对于python 3.4,cProfile可能是您可用的最佳选项之一,但您必须使用grep/sed/awk过滤结果才能获得相关结果,特别是如果您使用导入了大量内部调用的库发生.
我喜欢按呼叫次数排序:
python -m cProfile -s 'calls' <your_program>.py
现在python3中使用该方法的问题是如果外部调用cProfile将显示的原始调用的数量,因此在内部运行它可能是一个更好的主意:
import cProfile
pr = cProfile.Profile()
pr.enable()
your_function_call()
pr.disable()
# after your program ends
pr.print_stats(sort="calls")
Run Code Online (Sandbox Code Playgroud)
Out*_*rce 11
注意:如评论中所述,以下内容适用于PyCharm的付费版本:
如果使用3.x(不知道2.x),我将添加到shafeen的答案,并根据原始帖子使其更具体PyCharm.对于Web应用程序或更大的应用程序而言,这也适用于简单的命令行程序,其中将输出打印到stdout可能没问题(更好的是能够通过PyCharm的查看器对不同的方式进行排序).
实际上,通过实例化Profile并根据需要启用和禁用来做.为了使其有用,您需要将其保存到文件中.
您现在有一个要检查的配置文件.转到"工具"|"打开CProfile快照".选择profile.pstat,现在您可以根据需要按不同标题查看和排序.
摘要
import cProfile as profile
# In outer section of code
pr = profile.Profile()
pr.disable()
# In section you want to profile
pr.enable()
# code of interest
pr.disable()
# Back in outer section of code
pr.dump_stats('profile.pstat')
Run Code Online (Sandbox Code Playgroud)
在PyCharm的CProfile查看器中打开文件.
Ohu*_*nen 10
我很惊讶还没有人提到 SnakeViz。除了 Spyder 的分析器之外,这是迄今为止我能找到的最好的 Python 分析器:
pip install snakeviz
Run Code Online (Sandbox Code Playgroud)
然后:
python -m cProfile -o program.prof my_program.py
snakeviz program.prof
Run Code Online (Sandbox Code Playgroud)
它将在您的浏览器中打开一些漂亮的可视化效果:
| 归档时间: |
|
| 查看次数: |
22162 次 |
| 最近记录: |