Чтобы интегрировать модуль на C в программу на Python, неоходимо воспользоваться несколькими подходами. Это позволяет повысить производительность, используя расширения на C, что особенно важно для вычислительно-ёмких задач.
Написание C-модуля
Создайте функцию на C, которую вы хотите интегрировать. Например, функцию суммирования:
int add(int a, int b) {
return a + b;
}
Этот код теперь нужно скомпилировать в общий объект. Используйте gcc
:
gcc -shared -o add.so -fPIC add.c
Использование ctypes
ctypes
– это библиотека Python, которая позволяет загружать C-библиотеки и вызывать содержимые в них функции:
import ctypes
# Загрузите скомпилированную библиотеку
add_lib = ctypes.CDLL('./add.so')
# Укажите аргументы и тип возвращаемого значения
add_lib.add.argtypes = (ctypes.c_int, ctypes.c_int)
add_lib.add.restype = ctypes.c_int
# Используйте свою функцию
result = add_lib.add(5, 3)
print(f'Result is {result}')
Использование Cython
Cython – более мощный инструмент для интеграции C и Python. Позволяет писать Python-код, который компилируется в C. Это слегка усложняет начальные настройки, но может значительно повысить производительность.
Создайте файл add.pyx
:
def add(int a, int b):
return a + b
Далее настроьте setup.py
для компиляции:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("add.pyx"))
Скомпилируйте:
python setup.py build_ext --inplace
Теперь вы можете использовать модуль add
в своем Python-коде:
import add
result = add.add(5, 3)
print(f'Result is {result}')
Эти два подхода позволяют легко использовать мощь C в ваших Python-программах, обеспечивая как гибкость, так и улучшение производительности, когда это необходимо.
Категория: Информатика
Теги: программирование, интероперабельность, Python, C, оптимизация