Wenn ich Queue.Queue
verwende, funktioniert meine read()
Funktion nicht, warum? Aber wenn ich multiprocessing.Queue
verwenden, es funktioniert gut:multiprocessing.Queue und Queue.Queue sind anders?
from multiprocessing import Pool, Process, Queue
import os, time
# from Queue import Queue
def write(q):
for v in ['A', 'B', 'C']:
print 'Put %s to queue ' % v
q.put_nowait(v)
time.sleep(0.2)
def read(q):
while 1:
if not q.empty():
v = q.get(True)
print "Get %s from queue" % v
time.sleep(0.2)
else:
break
if __name__ == '__main__':
q = Queue()
pw = Process(target=write, args=(q,))
pr = Process(target=read, args=(q,))
pw.start()
pw.join()
pr.start()
pr.join()
print "all done..."
Denken Sie darüber nach: Wenn sie _weren_ nicht anders sind, warum würde 'multiprocessing.Queue' überhaupt existieren? Der springende Punkt ist, Ihnen ein 'queue.Queue'-ähnliches Objekt zu geben, das auch zwischen getrennten Prozessen funktioniert. – abarnert