zoukankan      html  css  js  c++  java
  • 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!!

  • 相关阅读:
    ngx_os_init解析
    cacheline相关优化手段
    std::thread_local
    std::initializer_list<T>
    MySQL group by 注意事项
    MySQL IFNULL函数
    python nginx不同参数压测脚本
    完全卸载oracle11g步骤
    Maven常用命令(转载)
    项目SVN的IP地址发生变化时修改SVN为新的IP地址
  • 原文地址:https://www.cnblogs.com/xiaxiaoxu/p/8758415.html
Copyright © 2011-2022 走看看