Ich habe mal eben eine Frage... auf die ich einfach keine Lösung finden will...
Ich will eine vielzahl an threads (hier 50) starten, eine Langwierige (und auch Längliche, deswegen hier symbolisiert durch i+5) Tätlichkeit ausführen und deren Ergebnis wieder dem Hauptprogramm zurück geben.
Code: Alles auswählen
import threading
geber=0
nehmer=0
def dierechnung(i):
neu=i+5 #Berechnung
schleifenende=0 #Zeile 8-11: testen ob Speicher für Rückgabe frei ist
while schleifenende==0:
if i==nehmen+1:
schleifenende=1
#rückgabe von "neu"
geben = geben +1 #dem Hauptprogramm sagen das wer zur abfrage bereit
def dieausgabe():
for starter in range(1,50): #Zeile 16-17: threads starten
Ergebnis=threading.Thread(target = Affenkopf(starter)).start()
for anehmen in range (1,50): #Anzahl der gestarteten threads, beginn der Abfrage
while geben==nehmen: #Zeile 19-20: werten bis NEUER wert in variable gespeichert ist
pass
neu2=Ergebnis
print(neu2)
nehmen=anehmen #bereit machen für neuen input
dieausgabe()
a) teilen sich threads und das Hauptprogramm, genauso wie Objekte ihre Variablen (ohne "self.") oder war ich da schon auf dem Falschen dampfer?
b)wie bekomme ich ein Rückgabewert... ergo das Ergebnis der Berechnung aus dem Thread?
join() kann ich nicht benutzen, den dann würde ich ja auf ein bestimmten Thread warten, habe ja aber 50 gleichzeitig am laufen...
return () gibts nicht ... wie ich gesehen habe ... Ich glaube ich verwechsle das zu stark mit Objekten XD
könnt ihr mir da helfen, würde mich freuen...