python cProfile和profile模型跳过函数

时间:2009-11-06 15:45:32

标签: python profiler

当我运行它时,cProfile模块基本上会跳过一些函数,而普通的配置文件模块会产生这个错误。

    The debugged program raised the exception unhandled AssertionError
"('Bad call', ('objects/controller/StageController.py', 9, '__init__'), <frame object at 0x9bbc104>, <frame object at 0x9bb438c>, <frame object at 0x9bd0554>, <frame object at 0x9bcf2f4>)"
File: /usr/lib/python2.6/profile.py, Line: 301
我做了所有的搜索,我找不到任何东西。我如何使它们正常工作?

@ yk4ever

StageController.py类如下所示:

class StageControl(ObjectControl):

    def __init__(self, canvas_name):
        ObjectControl.__init__(self, canvas_name,"stage_object")
        self.model = StageModel()
        self.variables()
        self.make_stage()
        self.overrides()

上面的“Bad call”错误似乎不喜欢这个类

2 个答案:

答案 0 :(得分:2)

我发现了问题。 Psyco 我的'StageControl'继承的'ObjectControl'类有一个简单的:

import psyco
psyco.full()

INSIDE该类导致了错误,因此只有继承了'ObjectControl'的类中的方法导致了profiler失败。我在某个地方读到了只在有需要的地方导入psyco是一个好主意,结果证明这是一个坏主意。

我曾经使用过psyco一段时间,直到我遇到cython,但由于某种原因,留下了psyco导入声明,其长度足以让探测器变得笨拙。自从倾销了psyco之后。

故事的寓意是:坚持cython,在一天结束时,没有什么比C更好。

答案 1 :(得分:0)

Python Bug #1117670似乎描述了同样的问题。一个最小的测试脚本,以重现那里也附加的类似问题。该错误已被标记为已修复。

请参阅上面的Python错误报告中的msg24185 以获取解决方法,可以在 Python 2.4 上使用。

您使用的是哪个Python版本?