首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在KCacheGrind中使用cProfile结果

在KCacheGrind中使用cProfile结果
EN

Stack Overflow用户
提问于 2009-12-13 17:43:01
回答 5查看 26.9K关注 0票数 55

我正在使用cProfile来分析我的Python程序。基于this talk,我的印象是KCacheGrind可以解析和显示cProfile的输出。

然而,当我导入文件时,KCacheGrind只是在状态栏中显示一个‘未知文件格式’的错误,并且坐在那里什么也不显示。

在我的性能分析统计数据与KCacheGrind兼容之前,我需要做一些特殊的事情吗?

代码语言:javascript
复制
...
if profile:
    import cProfile

    profileFileName = 'Profiles/pythonray_' + time.strftime('%Y%m%d_%H%M%S') + '.profile'

    profile = cProfile.Profile()
    profile.run('pilImage = camera.render(scene, samplePattern)')

    profile.dump_stats(profileFileName)
    profile.print_stats()
else:            
    pilImage = camera.render(scene, samplePattern)
...

包版本

  • KCacheGrind 4.3.1
  • Python 2.6.2
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-13 18:40:35

这可以使用一个名为lscallproftree的外部模块来完成

本文将介绍如何:CherryPy - CacheGrind

我的结果代码如下所示:

代码语言:javascript
复制
...
if profile:
    import cProfile
    import lsprofcalltree

    profileFileName = 'Profiles/pythonray_' + time.strftime('%Y%m%d_%H%M%S') + '.profile'

    profile = cProfile.Profile()
    profile.run('pilImage = camera.render(scene, samplePattern)')

    kProfile = lsprofcalltree.KCacheGrind(profile)

    kFile = open (profileFileName, 'w+')
    kProfile.output(kFile)
    kFile.close()

    profile.print_stats()    
else:            
    pilImage = camera.render(scene, samplePattern)
...

如果有人知道这样做的方法,不需要外部(即。不是随Python一起提供的)模块,我仍然很有兴趣了解它。

票数 7
EN

Stack Overflow用户

发布于 2010-08-25 06:26:26

使用cProfile,您还可以分析现有程序,而无需创建任何单独的分析脚本。只需使用profiler运行程序

代码语言:javascript
复制
python -m cProfile -o profile_data.pyprof script_to_profile.py

使用pyprof2calltree在kcachegrind中打开配置文件数据,它的-k开关会自动在kcachegrind中打开数据

代码语言:javascript
复制
pyprof2calltree -i profile_data.pyprof -k

例如,分析整个paster服务器和webapp的过程如下

代码语言:javascript
复制
python -m cProfile -o pyprof.out `which paster` serve development.ini

可以与easy_install一起安装pyprof2calltree。

票数 95
EN

Stack Overflow用户

发布于 2010-03-29 06:01:10

您可以使用profilestats.profile装饰器($ pip install profilestats) -- pyprof2calltree模块(lsprofcalltree.py的更名)的简单包装器:

代码语言:javascript
复制
from profilestats import profile

@profile
def func():
    # do something here

脚本可以像往常一样运行。profilestats创建了两个文件:与KCachegrind兼容的cachegrind.out.profilestatsprofilestats.prof,以及相应的cProfile格式。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1896032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档