我发现了我的python代码中的瓶颈,与psycho等一起玩.然后决定为性能编写ac/c ++扩展.
在swig的帮助下,你几乎不需要关心论点等.一切正常.
现在我的问题是:swig创建了一个非常大的py文件,它在调用实际的.pyd或.so代码之前执行了很多'checkings'和'PySwigObject'.
如果你手写这个文件或者让swig这样做,你们中是否有人有任何经验可以获得更多的性能.
我试图使用swig为某些C++代码创建python绑定.我似乎遇到了一个问题,试图从一些访问器函数创建python属性我有如下方法:
class Player {
public:
void entity(Entity* entity);
Entity* entity() const;
};
Run Code Online (Sandbox Code Playgroud)
我尝试使用python属性函数创建一个属性,但似乎swig生成的包装类与它至少对于setter不兼容.
你如何使用swig创建属性?
我有相当大的C++库,有几个支持它的子库,我需要把整个东西变成python扩展.我正在使用distutils因为它需要跨平台,但如果有更好的工具我会接受建议.
是否有办法使distutils首先编译子库,并在从主库创建扩展时链接它们?
鉴于如类
class MyClass:
text = "hello"
number = 123
Run Code Online (Sandbox Code Playgroud)
有没有办法在python中检查MyClass,确定它有两个属性text和number.我不能使用类似的东西,inspect.getSource(object)因为我要使用SWIG生成它的属性(所以它们隐藏在.so :)).
所以我真的在寻找与Java相当的东西 [Class.getDeclardFields][1]
任何帮助将不胜感激,否则我将不得不用SWIG + JAVA而不是SWIG + Python来解决这个问题.