我有一个相当简单的Python脚本,它包含一个像
这样的函数调用 f(var, other_var)
即。一个获取几个参数的函数。所有这些参数都可以在f中访问并具有值。
当我改为呼叫时
cProfile.run('f(var, other_var)')
它失败并显示错误消息:
NameError: "name 'var' is not defined"
Python版本
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
这里发生了什么?
答案 0 :(得分:9)
这是因为cProfile尝试exec
将您作为字符串传递给它的代码,并且失败了,因为,var
未在该段代码中定义!它使用run()
调用范围内的变量,但由于你没有告诉cProfile它们不知道使用它们。请改用runctx
,因为它允许您传入locals和globals字典以用于exec
ed代码:
cProfile.runctx( "...", globals(), locals() )