Ich bin Python Neuling und versuche mich gerade an der Programmierung mit threads . Dafür würde ich gerne wissen wie man ein Queue-Objekt zwieschen mehreren threads , die in eigenen files liegen verwendet.
Die beiden Klassen könnte man auch in ein file legen , da die beiden Klassen aber inzwischen etwas gewachsen sind wäre es mir aus gründen der Übersichtlichkeit lieber die Klassen in zwei eigene files zu legen.
hier ein Beispielcode für das gemeinsame file , der funktioniert.
Code: Alles auswählen
import threading
import random
import time
from queue import Queue
class A(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
for t in range(20):
self.number = random.randint(1,10)
self.wait = random.randint(0,99)/100
queue.put(self.number)
print(t)
time.sleep(self.wait)
queue.put("lll")
class B(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.booll= True
def run(self):
while self.booll != "lll":
try:
self.booll = queue.get( block = False )
except:
pass
else:
print(self.booll)
queue = Queue()
a = A()
a.start()
b = B()
b.start()
a.join()
b.join()
print("alle threads beendet")
main.py
Code: Alles auswählen
from queue import Queue
from a import A
from b import B
queue = Queue()
a = A()
a.start()
b = B()
b.start()
a.join()
b.join()
print("alle threads beendet")
Code: Alles auswählen
import threading
import random
import time
class A(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
for t in range(20):
self.number = random.randint(1,10)
self.wait = random.randint(0,99)/100
queue.put(self.number)
print(t)
time.sleep(self.wait)
queue.put("lll")
LG sauterleimport threading
class B(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.booll= True
def run(self):
while self.booll != "lll":
try:
self.booll = queue.get( block = False )
except:
pass
else:
print(self.booll)