gpt4 book ai didi

python - Bad Marshal 错误 -- runsnake

转载 作者:太空狗 更新时间:2023-10-29 18:03:51 26 4
gpt4 key购买 nike

我在 python 3 脚本上运行 cProfile,运行良好,然后尝试使用 runsnake 将其可视化。然而,我得到一个空屏幕和错误“错误的编码数据”。

我删除了 .pyc 文件,但这也不起作用。

我用来安装 runsnake 的代码是:

    sudo apt-get install python-profiler python-wxgtk2.8 python-setuptoolD
sudo easy-install installSquareMap RunSnakeRun

我正在使用 UBUNTU。

非常感谢。

注意:我应该添加我在激活 py3k 时安装了所有内容

最佳答案

TL;DR:在 Python 2.x 中进行分析并在 Python 3.x 中查看分析时会发生此错误,反之亦然。

我遇到了同样的问题。据我所知,RunSnakeRun 包还没有移植到 Python3。至少,我可以将它 pip 到 python2 而不是 python3 (SyntaxError)。此外,我认为 cProfile 的输出格式在 python 2/3 之间不兼容。我没有花时间找到对此的明确确认,但在 cProfile class pstats.Stats(*filenames, stream=sys.stdout) 的文档中,他们确实说“上述构造函数选择的文件必须由相应版本的配置文件或 cProfile 创建。具体来说,此分析器的 future 版本不保证文件兼容性,并且与生成的文件不兼容由其他剖析者。”。这似乎是你问题的根源。例如,我从 python3 输出了一个配置文件

import cProfile
cProfile.run('some code to profile', 'restats')

并尝试在 RunSnakeRun 中打开它,但遇到了与你遇到的相同的 marhsal 错误。此外,如果我这样做

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 进行开发,这是最适合您的方法。 pyprof2calltree结合KCachegrind在 Linux 上对我来说工作得很好。它可以提供与您从 RunSnakeRun 获得的分析输出类似的可视化 View 。

关于python - Bad Marshal 错误 -- runsnake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com