我在Python3脚本上运行了cProfile,运行得很好,然后尝试使用runsnake来可视化它。然而,我得到了一个空屏幕和错误‘坏的编组数据’。
我删除了.pyc文件,但这也不起作用。
我用来安装运行蛇的代码是:
sudo apt-get install python-profiler python-wxgtk2.8 python-setuptoolD
sudo easy-install installSquareMap RunSnakeRun我正在使用UBUNTU。
非常感谢。
注意:我应该补充说,我在激活py3k时安装了所有内容
发布于 2015-10-14 17:02:57
TL;DR:当在Python2.x中进行性能分析并在Python3.x中查看配置文件时,会出现此错误。
我也有同样的问题。据我所知,RunSnakeRun包还没有移植到Python3上。至少,我可以将其传递给python2,但不能传递给python3 (SyntaxError)。此外,我认为cProfile的输出格式在Python2/3之间是不兼容的。我没有花时间来确定这一点,但在cProfile class pstats.Stats(*filenames, stream=sys.stdout)的文档中,他们确实说“上面的构造函数选择的文件必须是由相应版本的profile或cProfile创建的。具体地说,这个profiler的未来版本不能保证文件兼容性,也不能与其他profiler生成的文件兼容。”这似乎是你问题的根源。例如,我从python3生成了一个配置文件输出
import cProfile
cProfile.run('some code to profile', 'restats')并尝试在RunSnakeRun中打开它,但得到了与您相同的封送错误。此外,如果我这样做了
import pstats
p = pstats.Stats('restats')
p.strip_dirs().sort_stats(-1).print_stats()在python3中,它就像一个护身符。如果我在python2中这样做,它会给出编组错误。现在,RunSnakeRun是在python2中执行的(除非您找到了某种方法让它在python3中运行)。因此,我猜测您已经在python3中执行了性能分析,并且正在使用依赖于python2的工具来分析它们,这些工具期望输出与python2兼容。
RunSnakeRun项目现在似乎有一段时间不活跃了( home page上的版权是2005-2011),而且没有迹象表明它会被移植到python3上。如果你想用Python3开发,也许考虑其他可视化工具可能是最好的方式。在Linux上,pyprof2calltree和KCachegrind的结合对我来说工作得很好。它可以提供与RunSnakeRun相似的分析输出的可视视图。
发布于 2018-08-07 19:00:03
我也遇到了同样的问题,我认为没有(好的)方法来使用Python3的runsnake (因为它已经在前面的答案中提到过)。但是,SnakeViz可能会有所帮助。这是一个相对直观的概要分析数据的图形概述,就像运行蛇一样,建立在概要文件输出的基础上。不错的奖励:也适用于Jupyter笔记本电脑!
https://stackoverflow.com/questions/25999882
复制相似问题