Revision history  [back]

Why doesn't Queue work?

from multiprocessing import Process, Queue import os, time, random def write(q): print ('Process to write: %s' % os.getpid()) a=33 q.put(a) def read(q): # It seems that the function doesn't work print ('Process to read: %s' % os.getpid()) while True: value = q.get(True) print ('Get %s from queue.' % value)

if __name__=='__main__': 
    q = Queue() 
    pw = Process(target=write, args=(q,)) p
    r = Process(target=read, args=(q,)) 
    pw.start() 
    pr.start() 
    pw.join() 
    pr.terminate() 
    print ('done')

the output:

Process to write: 1880
done

Why doesn't Queue work?

from multiprocessing import Process, Queue import os, time, random def write(q): print ('Process to write: %s' % os.getpid()) a=33 q.put(a) def read(q): # It seems that the function doesn't work print ('Process to read: %s' % os.getpid()) while True: value = q.get(True) print ('Get %s from queue.' % value)

if __name__=='__main__': 
    q = Queue() 
    pw = Process(target=write, args=(q,)) p
    r = Process(target=read, args=(q,)) 
    pw.start() 
    pr.start() 
    pw.join() 
    pr.terminate() 
    print ('done')

the output:

Process to write: 1880
done

Why doesn't Queue work?

from multiprocessing import Process, Queue import Queueimport os, time, random def write(q): randomdef write(q): print ('Process to write: %s' % os.getpid()) a=33 q.put(a) def read(q): os.getpid()) a=33 q.put(a)def read(q):             # It seems that the function doesn't work work print ('Process to read: %s' % os.getpid()) os.getpid()) while True: True: value = q.get(True) q.get(True) print ('Get %s from queue.' % value)value)if __name__=='__main__': q = Queue() pw = Process(target=write, args=(q,)) pr = Process(target=read, args=(q,)) pw.start() pr.start() pw.join() pr.terminate() print ('done')the output:Process to write: 1880done

if __name__=='__main__': 
    q = Queue() 
    pw = Process(target=write, args=(q,)) p
    r = Process(target=read, args=(q,)) 
    pw.start() 
    pr.start() 
    pw.join() 
    pr.terminate() 
    print ('done')

the output:

Process to write: 1880
done