我正在编写一个使用插件的应用程序。有两种类型的插件:Engine
和Model
。 Engine
对象具有调用Model.velocity()
方法的update()
方法。在两个python模块之间传递C函数指针
出于性能的考虑,这些方法允许要写入C.这意味着,他们有时会用Python编写,有时用C写的
的问题是,这个力量做一个昂贵的Python功能呼叫Model.velocity()
Engine.update()
(并重新获取GIL)。我曾考虑过在API中添加Model.get_velocity_c_func()
之类的东西,如果可用,允许Model
实现返回一个指向其C版本velocity()
方法的指针,这使得Engine
可以执行更快的C函数调用。
应该使用什么数据类型来传递函数指针?这是一个很好的设计,也许有一个更简单的方法?
我该如何将这个从我的'Model'传递给'Engine'?我从“引擎”的角度来看都是当前使用的“Model”的Python实例,我不知道如何从“Engine”中调用“Model”中的C代码(它甚至可能不存在) 'Engine'。 – 2010-01-21 02:05:40
我意识到我的评论没有意义......我的意思是,我如何将PyCObject从C传递给Python? – 2010-01-21 02:33:49
不要紧,我现在明白了,我只是在两边执行PyCObject_FromVoidPtr/PyCObject_AsVoidPtr,谢谢:) – 2010-01-21 03:46:15