Вызов функций C из Python
Мы можем вызвать функцию C из программы Python, используя модуль ctypes.
Вызов функции C из Python
Он включает в себя следующие шаги:
- Создание файла C (расширение .c) с необходимыми функциями
- Создание файла общей библиотеки (расширение .so) с помощью компилятора C.
- В программе Python создайте экземпляр ctypes.CDLL из общего файла.
- Наконец, вызовите функцию C, используя формат
{CDLL_instance}.{function_name}({function_parameters})
.
Шаг 1: Создание файла C с некоторыми функциями
#include <stdio.h>
int square(int i) {
return i * i;
}
У нас есть простая функция C, которая возвращает квадрат целого числа. Я сохранил этот код функции в файле с именем my_functions.c.
Шаг 2: Создание файла общей библиотеки
Мы можем использовать следующую команду для создания файла общей библиотеки из исходного файла C.
$ cc -fPIC -shared -o my_functions.so my_functions.c
Шаг 3: Вызов функции C из программы Python
>>> from ctypes import *
>>> so_file = "/Users/pankaj/my_functions.so"
>>> my_functions = CDLL(so_file)
>>>
>>> print(type(my_functions))
<class 'ctypes.CDLL'>
>>>
>>> print(my_functions.square(10))
100
>>> print(my_functions.square(8))
64
>>>
Если вы измените файл программы C, вам придется заново создать файл общей библиотеки.
Заключение
Реализация Python по умолчанию написана на языке C и называется CPython. Так что использование C-функций в программе на Python — не редкость. В этом уроке мы узнали, как легко вызывать функции C в программе на Python.