Ich versuche, meinen Worker-Threads sowohl ein Ereignis als auch eine Warteschlange zu geben. Die Warteschlange ist für sie, um miteinander zu sprechen. Das Ereignis soll ihnen signalisieren, dass sie bei Bedarf aufhören zu arbeiten. Ich halte diesen Fehler und ich kann nicht ganz herausfinden, was mit meiner Definition Konstrukteurs falsch istProblem beim Starten von Multiprozess-Threads und bei Verwendung von Ereignissen
ist hier der Fehler:
Traceback (most recent call last):
File "dualThreaded.py", line 52, in <module>
c = get_Count(q, e)
TypeError: __init__() takes exactly 2 arguments (3 given)
Hier ist mein Code:
from Queue import Empty
from multiprocessing import Process, Queue, Event
import time
class get_Count(object):
def __init__(self, q):
self.q = q
def run(self, e):
i = 0
run = True
while run == True:
print 'putting'
self.q.put('foo %d' % i)
time.sleep(.5)
if e.is_set():
run = False
class read_Count(object):
def __init__(self, q):
self.q = q
def run(self, e):
while True:
try:
value = self.q.get(False)
print value
except Empty:
print 'Nothing to process atm'
e.set()
time.sleep(.2)
if __name__ == '__main__':
e = Event()
q = Queue()
c = get_Count(q, e)
l = read_Count(q, e)
p1 = Process(target=c.run)
p1.start()
p2 = Process(target=l.run)
p2.start()
p1.join()
p2.join()
bearbeiten feste Tippfehler:
Ihr Codebeispiel stimmt nicht mit der Fehlermeldung überein. Es gibt keine Zeile 52, und es gibt keine Klasse "get_Proc_Count". Auch das Einrücken ist durcheinander. Bitte lesen Sie die Anleitung zur Herstellung eines [MCVE]. – ekhumoro