Ich würde dir dringend zu irgendeiner Form von IPC (z.B. xmlrpc ist ganz nett und relativ simpel, umfangreichere und ausgereiftere Möglichkeit wäre u.a. noch Pyro) raten und die Prozesse getrennt verwalten und starten.
Das, was du da geplant hast, lässt sich (wenn überhaupt) dann nur sehr umständlich lösen und ist IMHO auch kein schöner Ansatz.
Veränderungen nach gtk.main() durch anderen Thread
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Hi,
Du meinst doch: http://docs.python.org/library/xmlrpclib.html
So wie ich das sehe, läuft da die Kommunikation übers Netzwerk und das finde ich eigentlich nicht gut.
Ich werde es mir trotzdem mal ausprobieren und mich wieder melden.
Vielen Dank und Viele Grüße
Maxi
Du meinst doch: http://docs.python.org/library/xmlrpclib.html
So wie ich das sehe, läuft da die Kommunikation übers Netzwerk und das finde ich eigentlich nicht gut.
Ich werde es mir trotzdem mal ausprobieren und mich wieder melden.
Vielen Dank und Viele Grüße
Maxi
Hallo
Ich habe seit neuestem den dbus für mich entdeckt, ist auch ganz simpel.
http://dbus.freedesktop.org/doc/dbus-py ... orial.html
Gruß
Andyh
Ich habe seit neuestem den dbus für mich entdeckt, ist auch ganz simpel.
http://dbus.freedesktop.org/doc/dbus-py ... orial.html
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Hi,
das Ding scheint ganz gut zu sein, ist aber nicht Teil er Standard Bibliothek und unter Windows bekomme ich nur schwer zum laufen (so wie ich das sehe).
Ich benutzte zwar kein Windows aber ich habe extra Python als Sprache gewählt, weil sie unter verschiedenen Plattformen läuft und ich so mein Programm auch den Windows Usern zugänglich machen kann.
xmlrpc läuft übers Netzwerk und deshalb möchte ich es eigentlich auch nicht verwenden und Pyro ist wieder nicht Standard.
Habe jetzt aber eine Idee, wenn es wirklich daran liegt, dass gtk.main() in einem Anderen Prozess läuft, dann starte ich einfach mein ganzes Interface als Prozess und kann dort dann direkt gtk.main() als Hauptschleife laufen lassen.
Viele Grüße
Maxi
das Ding scheint ganz gut zu sein, ist aber nicht Teil er Standard Bibliothek und unter Windows bekomme ich nur schwer zum laufen (so wie ich das sehe).
Ich benutzte zwar kein Windows aber ich habe extra Python als Sprache gewählt, weil sie unter verschiedenen Plattformen läuft und ich so mein Programm auch den Windows Usern zugänglich machen kann.
xmlrpc läuft übers Netzwerk und deshalb möchte ich es eigentlich auch nicht verwenden und Pyro ist wieder nicht Standard.
Habe jetzt aber eine Idee, wenn es wirklich daran liegt, dass gtk.main() in einem Anderen Prozess läuft, dann starte ich einfach mein ganzes Interface als Prozess und kann dort dann direkt gtk.main() als Hauptschleife laufen lassen.
Viele Grüße
Maxi
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Hi,
Viele Grüße
Maxi
Es werden Ports blockiert...Und was ist das Problem mit dem Netzwerk?
Viele Grüße
Maxi
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Hi,
was meinst Du mit Lokalen Ports?
Naja, jedenfalls schon im ersten Beispiel:
Das ist doch eindeutig, stellt Euch mal vor, das machen alle und dann möchte man 2 Programme ausführen und die benutzten beide den gleichen Port, viel Spaß...
Deshalb, da biege ich lieber irgendetwas unsauberes zusammen bevor ich eine Kommunikation übers Netzt aufbaue.
Aber wie schon gesagt, werde das mit dem gtk_main() als Hauptschleife eines Prozesses mal ausprobieren.
Viele Grüße
Maxi
was meinst Du mit Lokalen Ports?
Naja, jedenfalls schon im ersten Beispiel:
Code: Alles auswählen
server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
Deshalb, da biege ich lieber irgendetwas unsauberes zusammen bevor ich eine Kommunikation übers Netzt aufbaue.
Aber wie schon gesagt, werde das mit dem gtk_main() als Hauptschleife eines Prozesses mal ausprobieren.
Viele Grüße
Maxi
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Hi,
ja schon, aber das ändert nichts, vielleicht erwische ich einen Port, der trotzdem schon benutzt wird.
Und selbst wenn es nicht so wäre, dann braucht mein GUI ja auch noch eine Überwachungsfunktion, die dann wieder in einem Prozess oder Thread laufen muss und dann wird das GUI ja nicht mehr aus dem Hauptthread bzw. Prozess in dem gtk_main() läuft verändert und es geht wieder nicht.
Viele Grüße
Maxi
ja schon, aber das ändert nichts, vielleicht erwische ich einen Port, der trotzdem schon benutzt wird.
Und selbst wenn es nicht so wäre, dann braucht mein GUI ja auch noch eine Überwachungsfunktion, die dann wieder in einem Prozess oder Thread laufen muss und dann wird das GUI ja nicht mehr aus dem Hauptthread bzw. Prozess in dem gtk_main() läuft verändert und es geht wieder nicht.
Viele Grüße
Maxi
Code: Alles auswählen
In [19]: from socket import socket
In [20]: s = socket()
In [21]: s.bind(("localhost", 0))
In [22]: s.getsockname()
Out[22]: ('127.0.0.1', 63786)
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Und PyGtk bietet auch Funktionen an, dass man Sockets in der Eventschleife von PyGtk überwachen kann. Und Netzwerkbibliotheken wie etwa Twisted bieten auch Möglichkeiten, dass sie das benutzen.
Zuletzt geändert von Trundle am Samstag 30. Januar 2010, 15:40, insgesamt 1-mal geändert.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Danke - gut zu wissen...
//Edit:
Muss jetzt erstmal schauen, was ich mache (so viele Möglichkeiten)...
//Edit:
Dann brauche ich aber wieder eine externe Bibliothek.Und PyGtk bietet auch Funktionen an, dass man Sockets in der Eventschleife von PyGtk überwachen kann. Und Netzwerkbibliotheken wie etwa Twisted kommen bieten auch Möglichkeiten, dass sie das benutzen.
Muss jetzt erstmal schauen, was ich mache (so viele Möglichkeiten)...
Es ist ja nicht so, dass man diese externen Bibliotheken einfach nur willkürlich benutzt und empfiehlt, sondern weil sie das Leben erleichtern sollen. Sicher, man braucht sie nicht, man kann das auch alles selber machen. Nur wozu? Letztlich schreibt man doch nur bestehendes neu und das oftmals in schlechter. Lowlevel-Netzwerkcode macht wirklich nicht sehr viel Spaß, vor allem, wenn man es richtig machen will. Denn gerade, wenn man dann noch mit Unterprozesen arbeitet, muss man eben mit solchen spaßigen Dingen wie unterbrochenen Syscall rechnen ("EINTR") und darum mag man sich einfach nicht selber kümmern.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Hi,
Das Programm soll ja schließlich auch auf meinem iPod laufen, das jetzige Programm ohne GUI tut es ja auch.
Auf dem iPod soll es später auch mit GUI laufen und da habe ich so eine Bibliothek nicht. Ich habe zwar auch kein PyGTK aber dafür eine iPod interne Bibliothek die ich ansteuern kann.
Viele Grüße
Maxi
Weil man ein Gerät benutzt, bei dem eben nur Python, ohne Bibliotheken drauf ist.Nur wozu?
Das Programm soll ja schließlich auch auf meinem iPod laufen, das jetzige Programm ohne GUI tut es ja auch.
Auf dem iPod soll es später auch mit GUI laufen und da habe ich so eine Bibliothek nicht. Ich habe zwar auch kein PyGTK aber dafür eine iPod interne Bibliothek die ich ansteuern kann.
Viele Grüße
Maxi
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Hi,
habe eine für mich akzeptable Lösung gefunden.
An diesem Code habe ich mich orientiert: http://haltcondition.net/?p=2319
Viele Grüße
Maxi[/code]
habe eine für mich akzeptable Lösung gefunden.
An diesem Code habe ich mich orientiert: http://haltcondition.net/?p=2319
Viele Grüße
Maxi[/code]