Вызов пользовательских подпрограмм C в приложении Python - PullRequest
0 голосов
/ 03 июля 2018

У меня есть две специально написанные подпрограммы C, которые я хотел бы использовать как часть большого приложения Python. Я бы предпочел не переписывать код C на чистом Python (или Cython и т. Д.), Особенно для поддержания скорости.

Каким самым чистым и простым способом я могу использовать свой C-код из своего Python-кода? Или какой самый чистый и простой способ для меня обернуть мой код C для использования в моем источнике Python?

Я знаю, что "самые чистые" и "самые простые" будут привлекать мнения, но мне просто нужны хорошие варианты использования пользовательского предварительно написанного кода , в отличие от многих других ответов / руководств, которые описывают, как использовать полноценные библиотеки C в качестве расширений CPython.

EDIT:

Cython и ctypes были предложены. Какой вариант лучше в моем случае? Каждая из двух упомянутых мною подпрограмм очень требовательна к вычислениям. Они используются для вычислений и реконструкции изображений, поэтому я планирую построить приложение Python вокруг их использования (с учетом других функций, которые у меня уже есть в Python) с использованием кода C, необходимого для обработки.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы можете позвонить C напрямую из Python. Пример вытащил отсюда: 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
0 голосов
/ 03 июля 2018

Используйте Cython, чтобы обернуть ваш C-код. Другими словами, создайте расширение CPython, используя Cython, которое вызывает ваш код на C.

...