Recherche de site Web

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 :

  1. Créer un fichier C (avec l'extension .c) contenant les fonctions requises
  2. Création d'un fichier de bibliothèque partagée (.so) en utilisant le compilateur C.
  3. Dans le programme Python, créez une instance ctypes.CDLL à partir du fichier partagé.
  4. 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

Fichier C et Fichier de Bibliothèque Partagée

É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
>>> 

Appel d'une fonction C depuis Python

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.