[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