小编典典

将cProfile结果与KCacheGrind一起使用

python

我正在使用cProfile来分析我的Python程序。基于这次演讲,我给人的印象是KCacheGrind可以解析并显示cProfile的输出。

但是,当我要导入文件时,KCacheGrind只会在状态栏中显示“未知文件格式”错误,而坐在那里什么也不显示。

在我的分析统计信息与KCacheGrind兼容之前,我需要做些特别的事情吗?

...
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

阅读 195

收藏
2020-12-20

共1个答案

小编典典

可以使用称为lscallproftree的外部模块来完成

本文介绍了如何:CherryPy-CacheGrind

与我产生的代码看起来像这样:

...
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不附带)的方法,那么我仍然会很感兴趣。

2020-12-20