📜  如何在Python调用C函数(1)

📅  最后修改于: 2023-12-03 15:38:37.517000             🧑  作者: Mango

如何在Python调用C函数

在某些情况下,Python的性能可能无法满足我们的要求,为了提高程序效率,可以使用C函数来代替Python内置函数。在本篇文章中,我们将介绍如何在Python中调用C函数。

准备工作

在开始调用C函数前,我们需要准备一些工作:

  1. 安装gcc编译器:使用C语言需要安装gcc编译器,如果已经安装则跳过本步骤。

    在Linux上可以使用以下命令安装:

    sudo apt-get update
    sudo apt-get install gcc
    

    在Windows上可以安装MinGW-w64。

  2. 编写C函数代码:在本例中,我们将编写一个简单的C函数,用于计算两个整数的和。

    在文件 "sum.c" 中编写代码如下:

    #include <stdio.h>
    
    int sum(int a, int b) {
        return a + b;
    }
    
  3. 生成动态链接库:将C函数编译为动态链接库,以便在Python中调用。在Linux上可以使用以下命令生成:

    gcc -shared -o libsum.so sum.c
    

    Windows上可以使用以下命令生成:

    gcc -shared -o sum.dll sum.c
    

    注:在Windows上生成的文件名为“sum.dll”,在Linux上生成的文件名为“libsum.so”,需要注意。

在Python中调用C函数

完成上述准备工作后,我们就可以在Python中调用C函数了。

  1. 导入ctypes库:这是Python内置的标准库,用于与C语言进行交互。

    import ctypes
    
  2. 加载动态链接库:使用ctypes的加载函数,将生成的动态链接库加载到Python中。

    在Linux上可以使用以下代码加载:

    lib = ctypes.cdll.LoadLibrary("./libsum.so")
    

    Windows上可以使用以下代码加载:

    lib = ctypes.cdll.LoadLibrary("./sum.dll")
    
  3. 调用C函数:在Python中调用C函数与调用Python函数类似,只需要将函数名和参数传递给ctypes即可。

    a = ctypes.c_int(1)
    b = ctypes.c_int(2)
    result = lib.sum(a, b)
    print(result)
    

完整代码如下:

import ctypes

# 加载动态链接库
lib = ctypes.cdll.LoadLibrary("./libsum.so")

# 调用C函数
a = ctypes.c_int(1)
b = ctypes.c_int(2)
result = lib.sum(a, b)

print(result)

输出:

3

到此为止,我们已经成功在Python中调用了C函数,通过使用C函数能够提高程序的效率。