Python是如何调用C的?

gstyhher  于 2023-01-25  发布在  Python
关注(0)|答案(1)|浏览(120)

Python究竟如何调用C库?例如,我相信Tensorflow主要是用C编写的,但也可以在Python中使用。我正在考虑用我自己的(解释型)编程语言(用Go语言编写,但我认为这是一个类似的过程)实现类似的东西。
当Python程序调用C函数时会发生什么?我想可能是RPC或DLL,但两者似乎都不太可能。

zzwlnbp8

zzwlnbp81#

cPython有两种调用C代码的主要方式:要么加载一个共享库并调用它的符号,要么将C代码打包为Python二进制模块,然后从Python代码中调用它们,就好像它们是普通的Python模块一样,这就是标准库中高性能的东西是如何实现的--例如json
使用ctypes模块加载一个共享库并从中调用函数是相当简单的,您可以在这里找到很多示例:https://docs.python.org/3/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

相关问题