进程的同步控制

1.进程中间的数据是隔离的
  1.1经常与经常之间是不能自由的交换内存数据的
  1.2全局的变量在子进程中修改,主进程和其他进程是感知不到而且不变的
2.守护进程
  2.1 特点
    生命周期只有和主经常的代码有关系,和其他子经常没有关系
    守护经常会在主进程的代码执行完毕之后直接结束,无论守护经常是否执行完毕
  2.2 代码表示
    p.daemon = True
  守护经常属性.默认是False,如果设置成True,就表示设置这个子进程为 一个守护进程
3.经常的同步控制
  进程之间有一些简单的信号来传递,但是用户不能感知,且用户不能传递自己想传递的内容
  3.1 锁
    多个经常共享一段数据时,数据会出现不安全现象,需要用锁来维护数据安全
  代码:

form multiprocessing import Lock
lock = Lock()  #创造一把锁
lock.acquire()  #上锁获取这把锁的钥匙
loc.release()  # 归还这把锁

 


  3.2 信号量
  本质是多把钥匙对应一把锁
  lock + 计数器实现

form multiprocessing import Semaphore
sem = Semaphore(4)  # 创造一把有几个钥匙的锁
lock.acquire()  # 上锁获取这把锁的钥匙
loc.release() # 归还这把锁

 



3.3 事件
代码:

form multiprocessing import Evente
e = Evente
e.wait() # 等待
# 阻塞 状态是False,那么就是阻塞
# 非阻塞 状态是Ture,那么就是非阻塞
e.is_set # 查看标志状态 事件创造之处默认是False
e.set()  # 将标志状态改为Ture
e.clear()#  将标志状态改为False
e.wait(timeout =10)
# 如果信号在阻塞10s之内变为True,那么不继续阻塞直接pass
# 如果就阻塞10s之后状态还是没变,那么继续,

 

posted @ 2018-07-25 16:48  Begin_Again  阅读(189)  评论(0编辑  收藏  举报