c und python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gast

Donnerstag 22. September 2005, 16:10

Hallo zusammen,
wie kann man es aus c heraus realisieren, das bestimmte werte einer Funktion an ein python prog geliefert werden und dieses dann ausgeführt wird?
Hoffe es gibt eine Lösung!
Vielen dank für die Hilfe

Gruß Alex
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 22. September 2005, 16:24

Da gibt es verschiedene Möglichkeiten. Du könnstest zum Beispiel den Python-Interpreter in dein C-Programm einbetten (nicht sonderlich leicht aber sollte zu schaffen sein). Alternativ kannst du auch eine IPC, am besten mit RPC per XML-RPC, SOAP, CORBA usw. machen, was zumindest von Python-Seite recht einfach zu realisieren ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 22. September 2005, 17:01

Anonymous hat geschrieben: wie kann man es aus c heraus realisieren, das bestimmte werte einer Funktion an ein python prog geliefert werden und dieses dann ausgeführt wird?
Hi Alex!

Am einfachsten sollte die Übergabe der Werte über die Kommandozeile sein.
Aufruf des Programms:

Code: Alles auswählen

python pythonprog.py --wert1="das ist text" --wert2=50 --flag1 --flag2
Wenn es sich um viele Daten handelt, dann kannst du ja auch eine Textdatei erstellen, deren Position wiederum als Parameter an die Kommandozeile übergeben wird. Python kann diese Textdatei auslesen und mit diesen Daten etwas anfangen. Ich persönlich mache so etwas gerne mit Yaml-Dateien. Falls Daten zurück gegeben werden müssen, kann der Pfad zur Rückgabedatei ebenfalls bereits vom C-Programm aus als Kommandozeilenparameter übergeben werden.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Gast

Donnerstag 22. September 2005, 20:50

Hallo zusammen,
erstmal vielen Dank für die super schnellen und interessanten Vorschläge!
Das mit der Komandozeile und der Textdatei hört sich gut an!
Wenn die zwei Dateien (c-prog u. python-prog) aber ständig miteinander kommunizieren müssen, dann muß ich auf CORBA und konsorten umstellen, oder? Es soll nämlich in einer c-Datei die Logik hinterlegt werden, während mit python die Signale an das C-Programm geschickt werden. Wo findet man dazu ein par Quellen?

vielen dank für eure Hilfe
Alex
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 23. September 2005, 06:11

Warum nicht eigentlich alles in Python und die Teile, die nur mit C gehen (welche das auch immer sind) als Modul für Python realisieren???
Da hast du viel weniger Probleme mit der Kommunikation zwischen C und Python ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Freitag 23. September 2005, 08:41

Über die Lösung als Modul hab ich schon was gelesen, aber ganz klar ist es mir noch nicht! Gibt es dazu evtl. eine gute Erklärung?

Gruss Alex
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

Freitag 23. September 2005, 12:27

Gast hat geschrieben:Über die Lösung als Modul hab ich schon was gelesen, aber ganz klar ist es mir noch nicht! Gibt es dazu evtl. eine gute Erklärung?
Vieleicht hilft dir ja der folgende Link:

http://www.cl.uni-heidelberg.de/kurs/ss ... ge057.html
mfg

heftic
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Freitag 23. September 2005, 13:07

Nimm dafür SWIG, das nimmt dir den großteil der Arbeit ab.

www.swig.org
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Montag 26. September 2005, 13:22

Die Standard Python Doku ist da eigentlich nicht schlecht.

Eine sehr verständlich Einführung findet sich auch hier.

Den Code solltest du mit den Distutils übersetzten.

Edit (Leonidas): Zweiten Post wie gewünscht gelöscht.
Antworten