[Python-de] Hilfe bei Threads
Thomas Guettler
guettli at thomas-guettler.de
Don Aug 10 22:06:19 CEST 2006
On Tue, Aug 01, 2006 at 10:43:39PM +0200, Bernd Will wrote:
> Hallo,
>
>
>
> folgendes Szenario:
>
> .... py2exe ...
Mist, Windows .... Ansonsten würde ich dir raten,
nicht mit Threads, sondern mit mehreren Prozessen
zu arbeiten. Du hast einen Master, der mit
Popen die Worker startet.
child=popen2.Popen4(cmd)
child.tochild.write("Befehl\n")
child.tochild.flush()
Die Ausgaben liest du von child.fromchild. Mit
dem Modul/Systemruf "select" wirst du informiert,
falls ein Worker dir Ergebnisse mitteilt.
Das Dumme ist nur, dass select unter Windows nur
mit TCP-Sockets, aber nicht mit Pipes funktioniert.
(Auf jeden Falls so weit ich weiß).
Das Master-Worker Vorgehen lässt sich ohne Gefahr
von Deadlocks lösen. Bei Threads sind mir Deadlocks
öfters begegnet. Außerdem skaliert eine Anwendung
mit mehreren Prozessen besser.
Die Windows Select-Einschränkung kannst du umgehen, in dem
der Worker einen TCP-Socket auf localhost öffnet, und
den Port dem Master mitteilt.
Gruß,
Thomas
--
Thomas Guettler, http://www.thomas-guettler.de/
E-Mail: guettli (*) thomas-guettler + de
Spam Catcher: niemand.leermann at thomas-guettler.de
More information about the python-de
mailing list