以下是两种工具如何工作的简要总结:
ctypes是一个非常pythonic的包装器cffi,它可以加载共享库(.so或.dll文件)并调用它们,而无需先编译任何代码来包装这些库中定义的函数.你必须告诉ctypes它将调用的函数,以便它可以从python类型(int,str等等)转换为在共享库中表达的abi(uint32_t,char *等等).
Cython是C语言翻译的"蟒蛇".生成的C代码可以编译,结果是一种特殊的共享库(.so或.dll再次),它具有所有正确的函数作为Python C扩展.Cython非常聪明,基于输入中的类型注释,它知道是否发出直接调用C函数的代码(当你使用时cdef)或通过PyObject_CallC api 调用常规python对象.
既然你可以(或多或少)在Cython源代码中自由地混合使用C和python,你就可以毫无困难地在你的Cython库中使用PySDL2,只需调用它就好像是普通的python,导入它,调用它,一切都应该"正常工作" ".
也就是说,你可能会libsdl直接在代码中包含声明,如果你最终从紧密的内部循环调用SDL,以避免从低级C类型转换为python类型的开销,只是为了ctypes将它们转换回来再次.您可以将其关闭,直到您的应用程序增长一点,并且您发现一些性能瓶颈.
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |