多进程同步问题,python多进程解读

先贴上代码吧,后续再补上文章。。


进程不能用全局变量,因为新进程一启动的就会先把全局变量执行一遍,所以你全局的进程锁是完全没用的,只能传参数传进去



#coding=utf-8

#
#测试一个进程在写文件的时候,另外一个文件能不读
#
import multiprocessing,time


"""
测试结果,with 的锁对进程完全没用  只对线程有用
"""




#线程可以用全局变量,但是进程用全局变量完全没有,所有的全局变量都是有自己的一份
#拷贝在里面,完全无法控制
#thread_lock = multiprocessing.Semaphore(1)  
#thread_lock = threading.Lock()
def read(thread_lock):
  thread_lock.acquire()
  with open("rw-test.txt","r") as f:
    print "in read"
  #thread_lock.acquire()
  #print "in read"
  #thread_lock.release()
    
def write(thread_lock):
  thread_lock.acquire()
  with open("rw-test.txt","r") as f:
    print "in write"
  
  #thread_lock.acquire()
  #print "in write"
  #while True:
  #  1+1
  #print "write end"
  #thread_lock.release()
    
if __name__ == "__main__":    


  #thread_lock = multiprocessing.Lock()


  thread_lock = multiprocessing.Semaphore(1)  
  r = multiprocessing.Process(target=read,args=(thread_lock,))
  w = multiprocessing.Process(target=write,args=(thread_lock,))
  w.start()
  time.sleep(1)
  r.start()
  w.join()
  r.join()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值