使用Python到C++函数转换Boost.Python

2024-03-28 09:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

<>我有一个类和API,用C++编写,并用Python来帮助Boost.Python在

我目前正在研究创建以下架构的可能性。
在python中:

from boostPythonModule import *
AddFunction( boostPythonObject.Method1, args )
AddFunction( boostPythonObject.Method2, args )
AddFunction( boostPythonObject.Method2, args )
RunAll( ) # running is done by C++
C++中的P>:

^{pr2}$

基本上,我试图把所有的函数都放到程序的本机部分。 问题是,我不确定是否有可能从Boost metainfo中提取所有必需的数据,以通用的方式执行此操作—在编译时,我不应该知道要调用什么函数以及它们接受什么参数。在

几个问题:
1我可以访问一些共享的Python信息表来检查这些东西吗?
2Boost.Python执行类型参数检查。它能单独重复使用吗?

告诉我你的想法。在

谢谢


Tags: 函数fromimportapi参数架构args可能性
1条回答
网友
1楼 · 发布于 2024-03-28 09:22:46

我想在Python级别上缓存函数及其参数-使用从{A1}节的最新表单保存参数,并调用C++函数,以后在Python级别完成的{a2}拆封将隔离您不受任何提升类型的复杂影响(所有类型检查都会在运行阶段完成),使其速度较慢。不太安全)。在

一种速度优化的方法,是用C++接口实现一个C++接口,它可以接受一个支持给定参数的函数调用,并在内部缓存其值,以便在以后运行时使用。在

struct Runner {
  virtual int run() = 0;
};

struct ConcreteRunner: public Runner {
  std::string _arg;
  void setArguments(std::string arg) {_arg=arg;}
  virtual int run() {clog << "ConcreteRunner is called with argument" << _arg << endl;}
};

此方法在RunAll部分之外处理参数解析,因此使其尽可能快。在

相关问题 更多 >