2 Sachen gleichzeitig machen

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
Keanuf
User
Beiträge: 39
Registriert: Freitag 3. Oktober 2003, 00:03
Kontaktdaten:

Hallo ich stehe vor folgendem Problem.

Ich will python dazubringen 2 Sachen gleichzeitig zu machen.
Am besten an einem Beispiel gelle ;)

Code: Alles auswählen

while True :
    data = dateihandler.read(8192)
    #hier mach mal was
    neuerdateihandler.write(data)

#andere schleife parallel gleich aufgebaut
while True :
    data2 = dateihandler2.read(8192)
    #hier mach mal was
    neuerdateihandler2.write(data2)
also während python in einer
while schleife arbeitet, soll es parallel dazu noch in einer andere while schleife Werte auslesen.

So nun hoff ich, das ich hier nicht auf dem Holzweg bin.
Folgendes habe ich schon probiert,
die 2. Anfrage While schleife auszulagern und dann per os.popen
(oder subprocess) aufzurufen,
leider druchlaufen beide schleifen einen Filehandler,
denn ich über Kommandozeile nicht übergeben kann, oder eventuell doch ? ;)

Eventuell hat hier jemand einen Lösungsansatz.

Danke
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Keanuf hat geschrieben:Ich will python dazubringen 2 Sachen gleichzeitig zu machen.
Hi Keanuf!

Dann würde ich mich mal ein wenig mit Threads befassen.

- http://docs.python.org/lib/module-thread.html
- http://docs.python.org/lib/module-threading.html
- http://www.python-forum.de/topic-3869.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Keanuf
User
Beiträge: 39
Registriert: Freitag 3. Oktober 2003, 00:03
Kontaktdaten:

Mensch Gerold SUPER Danke dir.
Lese schon fleissig und ich denke das war ein Volltreffer.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Code: Alles auswählen

import thread
def thread_func_eins():
   thread.start_new_thread(func_eins, ())

def func_eins():
   while True :
      data = dateihandler.read(8192)
      #hier mach mal was
      neuerdateihandler.write(data)

#andere schleife parallel gleich aufgebaut
def func_zwei():
   while True :
      data2 = dateihandler2.read(8192)
      #hier mach mal was
      neuerdateihandler2.write(data2)

thread_func_eins()
func_zwei()
mfg

Thomas :-)
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Stackless Python hat auch sogenannte Tasklets, ist vielleicht auch von (akademischem) Interesse
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Joghurt hat geschrieben:Stackless Python hat auch sogenannte Tasklets, ist vielleicht auch von (akademischem) Interesse
Fürs akademische Interesse hätte ich auch noch Greenlets anzubieten, ein Spin-off der Tasklets von Armin Rigo, als C-Modul für CPython (auch bekannt als py.magic.greenlet).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Moin,

nur mal so aus Spaß :) (ungetestet)

Code: Alles auswählen

from thread import start_new_thread as snThread

def func_n(dateihandler, neuerdateihandler, data = True): 
   while data : 
      data = dateihandler.read(8192) 
      #hier mach mal was 
      neuerdateihandler.write(data) 

snThread(func_n, (dateihandler, neuerdateihandler))
snThread(func_n, (dateihandler2, neuerdateihandler2))
Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten