demon16.1-16.2

来源:互联网 发布:电脑软件 著作权 专利 编辑:程序博客网 时间:2024/06/01 08:35
#!/usr/bin/env python# -*- coding:utf-8 -*-'''多进程的消息队列'''from multiprocessing import Queueimport multiprocessingdef 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,Processimport timedef 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()