C-Sprache zum Anzeigen und Erinnern Teil 4 Rufen Sie die C-Sprache von Python (Argument) double auf

Erhält a * b / c als Rückgabewert von Python mit reellen Zahlen a, b, c als Argumenten.

capi.py


a,b,c=10.0,20.0,3.0
d=capi.Fcal(a,b,c) #Berechnet in c Sprache
print(a*b/c) #Mit Python berechnet
print(d)

Ausführungsergebnis
capi>python capi.py
66.66666666666667
66.66666666666667

capilib.c


#include <Python.h>
static PyObject* Fcal(PyObject* self, PyObject* args){
    double a,b,c,d;
    if (!PyArg_ParseTuple(args, "ddd",&a,&b,&c)){
        return NULL;
    }
    d=a*b/c;
    return Py_BuildValue("d", d);
}
// Function Definition struct
static PyMethodDef myMethods[] = {
    { "Fcal",Fcal, METH_VARARGS, "Fcal a*b/c"},
    { NULL }
};
static struct PyModuleDef myModule = {
    PyModuleDef_HEAD_INIT,"myModule","C API Module",-1,myMethods
};
PyMODINIT_FUNC PyInit_myModule(void){
    return PyModule_Create(&myModule);
}

** Aufmerksamkeitspunkt ist **

p.c


double a,b,c,d;
    if (!PyArg_ParseTuple(args, "ddd",&a,&b,&c)){
        return NULL;
    }
    d=a*b/c;
    return Py_BuildValue("d", d);
  1. "ddd" wird in double konvertiert.
  2. Py_BuildValue ("d", d) gibt den Rückgabewert mit doppelter Genauigkeit zurück. Wenn Sie mit float rechnen, unterscheidet es sich vom Wert von Python.

setup.py


from distutils.core import setup, Extension
setup(name = 'myModule', version = '1.0.0',  \
   ext_modules = [Extension('myModule', ['capilib.c'])])

** Erstellen einer Bibliothek **

capi>python setup.py install

Recommended Posts

C-Sprache zum Anzeigen und Erinnern Teil 4 Rufen Sie die C-Sprache von Python (Argument) double auf
C-Sprache zum Anzeigen und Erinnern Teil 2 Rufen Sie die C-Sprache aus der Python-Zeichenfolge (Argument) auf
C-Sprache zum Anzeigen und Erinnern Teil 5 Rufen Sie die C-Sprache aus dem Python-Array (Argument) auf
C-Sprache zum Sehen und Erinnern Teil 3 Rufen Sie die C-Sprache aus Python auf (Argument) c = a + b
C-Sprache zum Sehen und Erinnern Teil 1 Rufen Sie die C-Sprache aus Python auf (Hallo Welt)
Gehen Sie zur Sprache, um Teil 8 zu sehen und sich daran zu erinnern. Rufen Sie die GO-Sprache von Python aus auf
Gehen Sie in die Sprache, um Teil 7 C in der Sprache GO zu sehen und sich daran zu erinnern
Rufen Sie die c-Sprache von Python aus auf (python.h)
Rufen Sie C-Sprachfunktionen von Python auf, um mehrdimensionale Arrays auszutauschen
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
Rufen Sie Matlab von Python zur Optimierung auf
Rufen Sie C von Python mit DragonFFI auf
Python, um von einer anderen Sprache zu wechseln
Rufen Sie C / C ++ von Python auf dem Mac auf
[Python] Drücken Sie Keras von TensorFlow und TensorFlow von c ++, um die Ausführung zu beschleunigen.
Rufen Sie mit ctypes Ihre eigene gemeinsam genutzte Bibliothek in C-Sprache von Python aus auf
[Es ist noch nicht zu spät, Python ab 2020 zu lernen] Teil 3 Python Language Basic (1)
Von Python bis zur Verwendung von MeCab (und CaboCha)
Portieren und Ändern des Doublet-Solvers von Python2 auf Python3.
Socket-Kommunikation in C-Sprache und Python
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
Versuchen Sie, das Programm "FORTRAN77 Numerical Computing Programming" auf C und Python zu portieren (Teil 1).
So generieren Sie eine Sequenz in Python und C ++
Schreiben von Protokollen in eine CSV-Datei (Python, C-Sprache)
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Versuchen Sie, das Programm "FORTRAN77 Numerical Computing Programming" auf C und Python zu portieren (Teil 3).
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen von Klassen Teil ➀
Versuchen Sie, das Programm "FORTRAN77 Numerical Computing Programming" auf C und Python zu portieren (Teil 2).
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen von Klassen Teil ➁
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Liste des zu verschiebenden und zu merkenden Python-Codes
Ich möchte C ++ - Code aus Python-Code erstellen!
Eine einfache Möglichkeit, Java von Python aus aufzurufen
Die Geschichte der Portierung von Code von C nach Go (und zur Sprachspezifikation)
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
Änderungen von Python 2 zu Python 3.0
Einführung in die Python-Sprache
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen einer einfachen Funktion Teil ➀
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen einer einfachen Funktion Teil ➁
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
Lernen Sie die Grundlagen und Tipps der kanonischen Python-Ausdrücke von Grund auf neu
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Objektorientiert in C-Sprache: "○ ✕ game" wurde überarbeitet und nach Python portiert
Verwenden Sie eine Skriptsprache für ein komfortables C ++ - Leben - OpenCV-Port Python zu C ++ -
Übergeben Sie die OpenCV-Daten der ursprünglichen C ++ - Bibliothek an Python
Wie man Python oder Julia von Ruby aus aufruft (experimentelle Implementierung)
Flirte von PHP nach Python
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Portiert von der R-Sprache von "Sazae-sans Janken Data Analysis" nach Python
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part1-
[First Ripple] [I am] Rufe JavaScript (Node.js) von Python auf und verarbeite Ripple
Einführung in die in C Language Part 1 Server Edition erlernte Socket-API
Installieren Sie mecab auf dem gemeinsam genutzten Sakura-Server und rufen Sie es von Python aus auf
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part2-
[C-Sprache] So erstellen, vermeiden und erstellen Sie einen Zombie-Prozess
Rufen Sie dlm von Python aus auf, um ein zeitvariables Koeffizientenregressionsmodell auszuführen