在 Python 应用程序中调用自定义 C 子例程

Calling custom C subroutines in a Python application

我有两个自定义编写的 C 例程,我想将它们用作大型 Python 应用程序的一部分。我不想用纯 Python(或 Cython 等)重写 C 代码,尤其是为了保持速度。

从我的 Python 代码中使用我的 C 代码的最干净、最简单的方法是什么?或者,对我来说,包装我的 C 代码以便在我的 Python 源代码中使用的最干净、最简单的方法是什么?

我知道 "cleanest" 和 "easiest" 会吸引意见,但我真的只需要一些好的选项来使用 自定义预写代码 ,而不是很多其他 answers/tutorials 描述了如何使用完整的 C 库作为 CPython 扩展。

编辑:

Cython 和 ctypes 都被推荐了。在我的情况下哪个是更好的选择?我最初提到的两个例程中的每一个都需要大量计算。它们用于图像计算和重建,因此我的计划是使用 C 代码 运行 根据需要进行处理。

使用 cython 包装您的 C 代码。换句话说,使用 Cython 创建一个 CPython 扩展,调用您的 C 代码。

您可以直接从 python 调用 C。从这里提取的示例:https://www.csestack.org/calling-c-functions-from-python/

from ctypes import *
libCalc = CDLL("./libcalci.so")

#call C function to check connection
libCalc.connect() 

#calling randNum() C function
#it returns random number
varRand = libCalc.randNum()
print "Random Number:", varRand, type(varRand)

#calling addNum() C function
#it returns addition of two numbers
varAdd = libCalc.addNum(20,30)
print "Addition : ", varAdd