Python-Interpreter / Embedding

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
Maple99
User
Beiträge: 44
Registriert: Montag 14. September 2009, 18:08

Hi @all,

ich habe mal eine Frage zum Einbetten von Pyton in C. Ich habe schon die Python/C-API Referenz gelesen, aber ich weiß dennoch nicht ganz genau wie ich mir das vorstellen muss.
Wenn ich Python einbetten möchte, schreibe ich ja ein "ganz normales" C-Programm. An irgendeiner Stelle kommt dann ein Py_Initialize()-Aufruf.
Von da an kann ich dann ja die API-Funktionen nutzen. Die Frage ist aber wie ich mir das vorzustellen habe. Wird da im Hintergrund ein Thread oder vielleicht sogar ein Prozess gestartet,
der quasi global zugänglich ist und wie ein Interpreter ohne Eingabemaske werkelt oder initialisiert der Aufruf einfach "ein paar" Variablen und ich nutze dann direkt C-Funktionen,
die auch der Interpreter benutzt den ich von der Kommandozeile starte und wo ich dann meine Befehle eintippe oder Module/Skripts zur Ausführung bringe?? Also die Frage ist WAS ist der Interpreter an dieser Stelle?
Vielleicht könnte mir das jemand erklären wie man sich das vorzustellen hat. Wie man vielleicht merkt fehlt mir diese ein wenig, aber ich hoffe dem kann jemand Abhilfe leisten ;)
Schon mal vielen Dank im Voraus.

Jonny
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Pro Instanz deines Programmes wird eine Instanz von Python gestartet. Lädst du DLLs in dein Programm, so wird die Instanz deines Programms via Py_Initialize() verwendet.

Gruß
Grüßle.
Maple99
User
Beiträge: 44
Registriert: Montag 14. September 2009, 18:08

Hi,

danke für deine schnelle Antwort. Du meinst es wird ein neuer Betriebssystem-Prozess gestartet? Oder wird ein zusätzlicher Thread in meinem Prozess gestartet oder meinst du etwas ganz anderes mit Instanz?
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Keine Ahnung wie das geregelt wird. Bei mir ist es jedenfalls so, dass wenn ich mein Programm 2x ausführe beide Programme VÖLLIG unabhängig voneinander laufen. Wenn ich also im Programm A das Modul "bla" bereitstelle und Programm B öffne, so ist dieses NICHT verfügbar. Sollte ich aber eine DLL in Programm A laden, wird die Instanz von Programm A verwendet. Ergo: In der DLL ist Modul "bla" verfügbar.

Gruß
Grüßle.
Antworten