Hallo zusammen,
Ich hab da ein kleines Problem bei dem ich bei google nicht wirklich weiter gekommen bin.
Ich hab zwei threads einen Socket threads der Daten im Netz bereitstellen soll und Einen Thread der die Daten für diesen Sammelt.
Ich hab gelernt globale Variablen sind böse und man soll Queue benutzen. Ok nur Probleme ist nur das die Daten nach dem abholen gelöscht werden. Das ist suboptimal da immer eine Aussage an den anderen Thread erfolgen soll. Dieser frägt zyklisch ab.
So wie stelle ich das am dümmsten und einfachsten an.
Was hübsches einfaches wäre toll meine programmier Kenntnisse würde ich selbst eher als fahrlässig beschreiben xD
Danke
Daten austausch zwischen zwei Threads
@Revolution,
Das mit dem Löschen der Daten hab ich auch nicht verstanden.
Hier ist ein Beispiel mit zwei Threads und einer gemeinsamen Queue.
'collect' sammelt Daten - hier Zufallszahlen und übergibt sie per Queue an den anderen Thread 'provide'. Der stellt sie in Form von print() (Bei dir die Socket) zur Verfügung.
Eine schöne Informationsquelle zum Thema Threading mit vielen Beispielen:
https://realpython.com/intro-to-python-threading/
Falls das nicht passt must du vielleicht mal deinen Code posten und wir schauen, was das Problem ist.
Das mit dem Löschen der Daten hab ich auch nicht verstanden.
Hier ist ein Beispiel mit zwei Threads und einer gemeinsamen Queue.
'collect' sammelt Daten - hier Zufallszahlen und übergibt sie per Queue an den anderen Thread 'provide'. Der stellt sie in Form von print() (Bei dir die Socket) zur Verfügung.
Code: Alles auswählen
import threading
import random
import queue
import time
def provide(common_queue):
while True:
data = common_queue.get()
print(data)
def collect(common_queue):
while True:
data = random.random()
common_queue.put(data)
time.sleep(1)
common_queue = queue.Queue()
provider = threading.Thread(target=provide, args=(common_queue,))
collecter = threading.Thread(target=collect, args=(common_queue,))
provider.start()
collecter.start()
https://realpython.com/intro-to-python-threading/
Falls das nicht passt must du vielleicht mal deinen Code posten und wir schauen, was das Problem ist.