C++ “我怎么能?”;钩入;Python来自C++;它何时执行函数?我的目标是建立个人档案

C++ “我怎么能?”;钩入;Python来自C++;它何时执行函数?我的目标是建立个人档案,c++,python,profiling,C++,Python,Profiling,我正在一个应用程序中实现一个分析器,对于如何实现Python评测以便在我现有的工具中显示结果,我感到有点困惑。该应用程序允许通过与Python解释器通信来编写Python脚本 我想知道是否有人对如何从C语言分析Python函数有想法++ 感谢您的建议:)分析Lua中经常使用的现有函数的常用技术是使用您自己的版本覆盖函数,该版本将开始计时,调用原始函数,并停止计时,返回原始函数返回的值。我们不确定您的目标是什么,但我个人不会从零开始,而是使用现有的模块进行分析。cFrm模块是用C编写的,如果要相信

我正在一个应用程序中实现一个分析器,对于如何实现Python评测以便在我现有的工具中显示结果,我感到有点困惑。该应用程序允许通过与Python解释器通信来编写Python脚本

我想知道是否有人对如何从C语言分析Python函数有想法++


感谢您的建议:)

分析Lua中经常使用的现有函数的常用技术是使用您自己的版本覆盖函数,该版本将开始计时,调用原始函数,并停止计时,返回原始函数返回的值。

我们不确定您的目标是什么,但我个人不会从零开始,而是使用现有的模块进行分析。cFrm模块是用C编写的,如果要相信文档,应该是易于扩展的:

C++有什么特殊的原因吗?用一个装饰器来装饰你的函数可能会更容易,因为这个装饰器执行时间,并用分析器注册每个调用。谢谢,但是我如何才能在C++中得到它。我应该更清楚。我写的工具是C++,应用程序的配置文件也用C++编写,脚本可以用Python来完成。因此,我的目标是只使用我的工具对这些Python脚本计时。在这种情况下,如何调用脚本?如果用户只是指定了一个脚本,而您让它运行,我认为您可以实现一个小型python存根,它执行
cProfile.run(导入模块)
或类似的操作。然后,您可以使用调用返回的统计信息来做任何您想做的事情。将是一个Python解决方案,但是因为cPrror是用C编写的,我确信您也可以直接从C++调用它。脚本由用户执行(应用程序允许用户“源”脚本并运行它们)。如何调用C++的cPo剖面?我在这方面找不到任何文档(可能我的google fu很弱)…我自己也没有尝试过(即从c本身调用python API的c函数),第二眼看到至少一个问题:python定义了所有静态方法,并使用PyMethodDef结构通过函数指针访问它们。现在我相信您可以通过某种方式找到该指针并自己初始化所有内容,只需使用正确的参数调用python函数cProfile.run(),您的工作就会轻松得多。如果您需要关于如何执行第二种可能性的更多信息,您可能应该问第二个问题(初始化PythonInterpreter,然后从中调用方法)。文档非常缺乏,我很乐意提供帮助-它没有太多的代码,而且比其他方法简单得多。。虽然我相信这里或python邮件列表上的一些专家也可以提供帮助。谢谢,但是现有的脚本库中有很多python脚本,所以我不确定我的客户对我告诉m进行手动更改。@ EasySuthes,您可以从C++改写,而不是手动更改。