Python的cProfile和profile模型跳过函数。

3
基本上,当我运行 cProfile 模块时会跳过某些函数,而正常的 profile 模块则会产生这个错误。
    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
你能提供代码示例,特别是调用那些函数的示例吗? - yk4ever
2个回答

2
我找到了问题所在。Psyco。我的“StageControl”继承的“ObjectControl”类有一个简单的:
import psyco
psyco.full()

在引起错误的类内部,只有继承了'ObjectControl'的类中的方法导致性能分析器失败。我在某个地方读到过仅在必要时导入psyco是一个好主意,结果证明这是个坏主意。

我曾经使用psyco一段时间,直到我遇到cython,但由于某种原因,我留下了psyco导入语句,足以破坏性能分析器。我现在已经放弃了psyco。

故事的寓意是:只需坚持使用cython,最终没有什么能比得上C。


0

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

请参见上述 Python Bug 报告中的 msg24185,以获取可用于 Python 2.4 的解决方法。

您使用哪个版本的 Python?


在启用Psyco时进行任何分析或调试并不是一个好主意。 - fviktor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接