Website-Suche

Aufrufen von C-Funktionen aus Python


Wir können eine C-Funktion aus einem Python-Programm mit dem ctypes-Modul aufrufen.

Aufrufen einer C-Funktion aus Python

Es umfasst die folgenden Schritte:

  1. Erstellen einer C-Datei (mit der Endung .c) mit den erforderlichen Funktionen
  2. Erstellen einer Shared Library-Datei (.so-Erweiterung) mit dem C-Compiler.
  3. Im Python-Programm eine ctypes.CDLL-Instanz aus der Shared-Datei erstellen.
  4. Rufen Sie schließlich die C-Funktion mit dem Format {CDLL_instance}.{function_name}({function_parameters}) auf.

Schritt 1: Erstellen einer C-Datei mit einigen Funktionen

#include <stdio.h>

int square(int i) {
	return i * i;
}

Wir haben eine einfache C-Funktion, die das Quadrat einer ganzen Zahl zurückgibt. Ich habe diesen Funktionscode in der Datei mit dem Namen my_functions.c gespeichert.

Schritt 2: Erstellung der gemeinsamen Bibliotheksdatei

Wir können den folgenden Befehl verwenden, um die Shared Library-Datei aus der C-Quellcodedatei zu erstellen.

cc -fPIC -shared -o my_functions.so my_functions.c

C-Datei und Shared Library-Datei

Schritt 3: Aufrufen einer C-Funktion aus einem Python-Programm

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

Aufrufen einer C-Funktion aus Python

Wenn Sie die C-Programmdaten ändern, müssen Sie die gemeinsam genutzte Bibliotheksdatei neu generieren.

Schlussfolgerung

Die Standardimplementierung von Python ist in der Programmiersprache C geschrieben und wird CPython genannt. Daher ist es nicht sehr ungewöhnlich, C-Funktionen in einem Python-Programm zu verwenden. In diesem Tutorial haben wir gelernt, wie man C-Funktionen leicht in einem Python-Programm aufruft.