Zac*_*Zac 2 c python dynamic-linking
Python如何调用C库?例如,Tensorflow我认为主要是用C语言编写的,但可以从Python中使用.我正在考虑在我自己的(解释的)编程语言中实现类似的东西(用Go编写,但我认为它将是一个类似的过程).
Python程序调用C函数时会发生什么?我在想RPC或DLL,但它们似乎都不太可能.
cPython有两种主要方式来调用C代码:通过加载共享库并调用它的符号,或者将C代码打包为Python二进制模块,然后从Python代码调用它们就好像它们是普通的Python模块一样,这是多么高的性能实现标准库中的东西 - 例如json.
加载共享库并使用该ctypes模块从中调用函数是相当简单的,你可以在这里找到很多例子:https://docs.python.org/2/library/ctypes.html
将您的C代码打包为二进制Python模块需要大量的样板并仔细关注详细信息,例如引用计数,空指针等,并在此处记录:https://docs.python.org/2/extending/extending.html
有几个库可以自动执行该过程并为您生成绑定代码.一个例子是boost.python:https: //www.boost.org/doc/libs/1_65_0/libs/python/doc/html/tutorial/index.html
| 归档时间: |
|
| 查看次数: |
2036 次 |
| 最近记录: |