Kommunikation unter Threads

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
informatics
User
Beiträge: 11
Registriert: Freitag 16. Juli 2004, 09:33

Hallo,
Ich suche eine Möglichkeit einfach Nachrichten unter Threads auszutauschen. Bin hierbei auf das candygram.sourceforge.net Project gestossen, welches sich sehr viel versprechend an hört. Nur habe ich im FAQ der Seite gelesen, dass es unter manchen Betriebssystem zu Begrenzungen bei der Anzahl von Threads kommen kann. Ich müsste aber unter Umständen sehr sehr viele Threads gleichzeitig laufen lassen. Habt ihr damit schon Erfahrungen gemacht? Wie viel Threads kann man in der Regel öffnen? Dachte bisher, dass ein paar 1000 problemlos möglich wären. Welche Techniken verwendet ihr zur Kommunikation unter Threads?

Viele Grüße

Informatics
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Für was brauchst du über 1000 Threads?

Ich hab bisher nur wenige Threads gebraucht und sonst hab ich meistens mit Queues die Kommunikation gemacht.

Gruss
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Ich hab noch nie mit mehr als 2 Threats gearbeitet.
Eine für die Programmoberfläche, den 2. für die Aufgabe des Programms.
Für was bitte 1000??? :shock:
TUFKAB – the user formerly known as blackbird
informatics
User
Beiträge: 11
Registriert: Freitag 16. Juli 2004, 09:33

Hallo,
Gut 1000 Threads sind vielleicht etwas übertrieben ;-) Vermutlich brauche ich nicht soviele. Ich war nur etwas verwundert darüber, das die Anzahl an Threads so beschrenkt zu sein scheint.. vielleicht braucht man ja doch mal mehr? Nachrichten schicken kann ich also mit Queues? Werd es mir mal ansehen. Habt ihr vielleicht ein gutes Beispiel zur Hand?

Viele Grüße

Informatics
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Also bei meinem System hat Apache die meistens Threads mit 250 aber die meisten sind inaktiv. Ich glaube ich hab mal was gelesen, dass nicht mehr als 20 gleichzeitig aktive Threads laufen sollten.

Die Queues sind ganz einfach:

Code: Alles auswählen

from threading import Thread
from Queue import Queue
class Thread1(Thread):
    def __init__(self,reciever,sender):
        self.reciever= reciever
        self.sender = sender
        
        super(Thread1, self).__init__()
        
    def run(self):
        while 1:
            item = self.reciever.get()
            print item
            self.sender.put(item+".")
q1 = Queue()
q2 = Queue()

t1 = Thread1(q1,q2)
t2 = Thread1(q2,q1)

q1.put('hallo')
Sobald q1.put('hallo') ausgeführt wird, schicken sich die beiden Threads die Meldung hin und her, beim get() wartet der Thread bis ein Element vorhanden ist, nur merkst du dass hier nicht, weil sie sich sofort wieder eine Meldung schicken.

Gruss

*edit* ups die beiden Threads müssen natürlich noch mit start() aktiviert werden.
informatics
User
Beiträge: 11
Registriert: Freitag 16. Juli 2004, 09:33

Hallo,
Werd es gleich ausprobieren.Danke :-)

Viele Grüße

Inforamtics
Antworten