Поиск по сайту:

Вызов функций C из Python


Мы можем вызвать функцию C из программы Python, используя модуль ctypes.

Вызов функции C из Python

Он включает в себя следующие шаги:

  1. Создание файла C (расширение .c) с необходимыми функциями
  2. Создание файла общей библиотеки (расширение .so) с помощью компилятора C.
  3. В программе Python создайте экземпляр ctypes.CDLL из общего файла.
  4. Наконец, вызовите функцию 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.