#!/usr/bin/env python # -*- coding:utf-8 -*- '''多进程的消息队列''' from multiprocessing import Queue import multiprocessing def write(q): for i in ['a','b','c','d']: q.put(i) print('put {0} to queue'.format(i)) def read(q): while 1: result = q.get() #print(result) print('get {0} from queue'.format(result)) def main(): q = Queue() pw = multiprocessing.Process(target=write,args=(q,)) pr = multiprocessing.Process(target=read,args=(q,)) pw.start() pr.start() pw.join() pw.terminate() #没有消息的时候,结束,不在写入 if __name__ =="__main__": main()
#!/usr/bin/env python # -*- coding:utf-8 -*- '''消息队列pie''' from multiprocessing import Queue,Pipe,Process import time def proc1(pipe): for i in xrange(1,10): pipe.send(i) print('send {0} to pipe'.format(i)) def proc2(pipe): n = 9 while n>0: result = pipe.recv() print('recv {0} from pipe'.format(result)) def main(): pipe = Pipe(duplex=False) ##F为逆向传输,T为双工型,两边都可以传输 p1 = Process(target=proc1,args=(pipe[1],)) p2 = Process(target=proc2,args=(pipe[0],)) p1.start() p2.start() p1.join() p2.join() pipe[0].close() ##关闭 pipe[1].close() if __name__ == '__main__': main()