Appeler des fonctions C depuis Python
Nous pouvons appeler une fonction C depuis un programme Python en utilisant le module ctypes.
Appel d'une fonction C depuis Python
Cela implique les étapes suivantes :
- Créer un fichier C (avec l'extension .c) contenant les fonctions requises
- Création d'un fichier de bibliothèque partagée (.so) en utilisant le compilateur C.
- Dans le programme Python, créez une instance ctypes.CDLL à partir du fichier partagé.
- Enfin, appelez la fonction C en utilisant le format
{CDLL_instance}.{function_name}({function_parameters}).
Étape 1 : Créer un fichier C avec quelques fonctions
#include <stdio.h>
int square(int i) {
return i * i;
}
Nous avons une fonction C simple qui renverra le carré d'un entier. J'ai enregistré ce code de fonction dans le fichier nommé my_functions.c.
Étape 2 : Création du fichier de bibliothèque partagée
Nous pouvons utiliser la commande suivante pour créer le fichier de bibliothèque partagée à partir du fichier source C.
cc -fPIC -shared -o my_functions.so my_functions.c
Étape 3 : Appeler une fonction C depuis un programme 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
>>>
Si vous modifiez le fichier du programme C, vous devrez régénérer le fichier de la bibliothèque partagée.
Conclusion
L'implémentation par défaut de Python est écrite en langage C et s'appelle CPython. Il n'est donc pas très rare d'utiliser des fonctions C dans un programme Python. Dans ce tutoriel, nous avons appris comment appeler facilement des fonctions C dans un programme Python.


