2

我正在开发一个使用该trace模块来跟踪代码执行的项目。
当我调用trace.Trace(args).run(stuff)时,stuff必须是代码对象或字符串。

现在,我正在构建我将通过调用来调用的函数functools.partial。这部分完全按照我的需要工作。

但是,当我到达跟踪部分时,我无法使用functools.partial对象执行跟踪。我不能使用myFuncToolsPartialObject.func.func_name(args),因为我不能保证该函数将被导入本地范围。我可以通过调用 import 来解决这个问题,但目前我不想这样做(我们称之为个人偏好)。

有没有办法可以将functools.partial对象转换为代码对象以便正确调用跟踪?

我知道我可以要求myFuncToolsPartialObject.func.func_code,但我不知道如何在所需的参数上调用它

4

2 回答 2

1

事实证明,它trace仅支持这个用例。trace.Trace().runfunc(funcObject, *args)正是这样做的。

文档

runfunc(func, *args, **kwds)
Call func with the given arguments under control of the Trace object with the current tracing parameters.
于 2013-02-13T04:16:37.940 回答
0

这行得通吗?

trace.Trace().run((lambda :partial_stuff(args)).func_code)
于 2013-02-13T03:50:49.940 回答