PyRun_SimpleString() 函数慢吗?

问题描述

我有一个 C++ 应用程序,它可以进行很多计算,但大多数时候它需要通过 PyRun_SimpleString() 执行简单的脚本,所以我很好奇 Python/C API 中是否有什么东西,接下来做什么会更快任务:

  1. 做像x = 0.1这样的简单赋值(随时间变化)?
  2. 执行存储在字符串中的脚本(也许像编译一次以运行得更快)?

现在我通过执行 PyRun_SimpleString() 来完成所有这些任务。循环内性能损失是显着的。

解决方法

如您所料,运行 Python 代码确实有两个部分:解释和执行。请参阅 Py_CompileStringPyEval_EvalCode。但是对于像 x=0.1 这样的简单语句,您甚至可以考虑通过 PyLong_FromDouble(0.1)

自己修改 locals