Se utilizzo Queue.Queue
, la mia funzione read()
non funziona, perché? Ma se io uso multiprocessing.Queue
, funziona bene:multiprocessing.Queue e Queue.Queue sono diversi?
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..."
Pensateci in questo modo: se non fossero diversi, perché esisterebbe "multiprocessing.Queue"? Il suo scopo è darti un oggetto 'queue.Queue' che funzioni anche tra processi separati. – abarnert