python管道pipe,两个进程,使用管道的两端分别执行写文件动作,带锁(lock)

#coding=utf-8
import multiprocessing as mp

def write_file(content,lock):
    lock.acquire()
    with open(r"d:\0409.txt",'a') as fp:
        fp.write(content+' ')
    lock.release()


def proc_1(pipe,lock):
    pipe.send('Hello!')
    info=pipe.recv()
    print "proc_1 received:%s" %info
    write_file(info,lock)
    pipe.send('what is your name?')
    info=pipe.recv()
    write_file(info,lock)
    print "proc_1 received:%s" %info

def proc_2(pipe,lock):
    info=pipe.recv()
    print "proc_2 received:%s" %info
    write_file(info,lock)
    pipe.send("hello,too!")
    info=pipe.recv()
    print "proc_2 received:%s" %info
    write_file(info,lock)
    pipe.send("don't tell you!!")
   

if __name__ == '__main__':
    lock=mp.Lock()
    pipe=mp.Pipe()
    print type(pipe)
    p1=mp.Process(target=proc_1,args=(pipe[0],lock))
    p2=mp.Process(target=proc_2,args=(pipe[1],lock))
    p2.start()
    p1.start()
    p2.join()
    p1.join()

c:Python27Scripts>python task_test.py
<type 'tuple'>
proc_2 received:Hello!
proc_1 received:hello,too!
proc_2 received:what is your name?
proc_1 received:don't tell you!!

原文地址:https://www.cnblogs.com/xiaxiaoxu/p/8758415.html