Daten zwischen einem Python und einem C Programm austauschen

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
wellnestom
User
Beiträge: 29
Registriert: Sonntag 13. Februar 2011, 20:29

Hi, ich hab folgendes Problem:
Ich habe ein Python Programm das mir in einer while-Schleife alle 25 Millisekunden neue Werte errechnet und sie in Variablen schreibt. Nun soll ein parallel laufendes C Programm diese Werte weiterverarbeiten.
Kann ich irgendwie die Speicheradresse der Variablen in Python rausfinden und in C einfach einen Zeiger darauf setzen?
Ich hab schon den Umweg über eine Datei versucht, das klappt aber nicht so gut weil der Dateizugriff zu lange dauert wenn der Rechner noch auf andere Dateien zugreift.
Ich benötige aber spätestens nach 30 Millisekunden neue Werte in meinem C Programm.
Kann mir jemand weiterhelfen oder einen Tipp geben?
Mir gefällt die Lösung mit 2 Programmen die parallel laufen zwar auch nicht, es geht aber leider nicht anders.

Gruß Tom
BlackJack

@wellnestom: Welches System? Muss es plattformunabhängig sein? Ich würde `mmap` versuchen.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ansonsten ist auch eine Lösung über Sockets schnell implementiert.
Das Leben ist wie ein Tennisball.
wellnestom
User
Beiträge: 29
Registriert: Sonntag 13. Februar 2011, 20:29

@BlackJack: Debian.
Ich denke es wird wohl auf die Sockets rauslaufen. Das ist vermutlich die einfachste Methode.

Danke euch!
theo.puke
User
Beiträge: 17
Registriert: Samstag 21. Januar 2012, 16:17

Kann man das nicht auch über ein Datenbankdatei, auf die beide Programme zugreifen können, lösen?
EDIT: Sorry, hab überlesen, dass das schon probiert wurde.
NiklasRosenstein
User
Beiträge: 17
Registriert: Donnerstag 16. Juni 2011, 21:38

Warum nicht einfach eine Dll per ctypes einbinden die die Werte verarbeitet?
BlackJack

@NiklasRosenstein: Weil das dann nicht zwei parallel laufende Programme sind. Das ist laut erstem Beitrag eine Vorbedingung an der man nichts ändern kann.
Antworten