同步异步复习和新内容锁,信号,时间机制

课程回顾:

  并行:  两个进程在同一时间点发生

  并发:  两个进程在同一时间间隔内运行

  同步:  某一个任务的执行必须依赖另一个任务的返回值

  异步:  某一个任务的执行,不需要依赖于另一个任务的返回,只需要告诉另一个任务一声

  阻塞:  程序因为类似于IO等待,等待事件等导致无法继续执行

  非阻塞:  程序遇到类似于IO操作时,不在阻塞等待,如果没有及时的处理IO,就报错或者跳过等其他操作

进程的方法和属性:

  方法:   start()  开启一个子进程

      join  异步变同步,让父进程等待子进程的执行结束,再继续执行

      is_alive  判断进程是否还活着

      terminate  杀死进程

  属性:

      name  子进程的名字

      pid    子进程的pid

      daemon  设置进程为守护进程,给一个True代表为守护进程,默认为False

守护进程:

    特点:

      随着父进程的代码执行完毕才结束

      守护进程不能创建子进程

      守护进程必须要在start之前设置

IPC  --  inter  process  Communication   进程之间通信

今天内容:  

  学习锁机制

    l=Lock()

    一把钥匙配一把锁

     拿钥匙,开门  l.acquire()

     还钥匙,锁门  l.release()

  学习信号机制

    sem = Semaphore(n)

    n:是指初始化一把锁配几把钥匙,一个int型

    拿钥匙,锁门  l.acquire()

    换钥匙,开门  l.release()

    信号量机制比锁机制多了一个计数器,这个计数器是用来记录当前剩余几把钥匙

    当计数器为0时,表示没有钥匙了,此时acquire()处于阻塞

    对于计数器来说,没acquire一次,计数器内部就减1,release()一次,计数器就加1

 

  学习事件机制

    e = Event()

    e.set()  #将is_set()设为True

    e.clear()  #将is_set设为False  

    e.wait()   #判断is_set的值,如果bool为True,则非阻塞,bool值为False,则阻塞

    e.is_set   #标识

    事件是通过is_set()的bool值,去标识e.wait()的阻塞状态

    当is_set()的bool值为False时,e.wait()是阻塞状态

    当is_set()的bool值为True时,e.wait()时非阻塞状态

    当使用set()时,是把is_set的bool变为True

    当使用clear()时,是吧is_set的bool变为 False

 

 

 

posted @ 2019-12-03 19:59  hou3037  阅读(137)  评论(0编辑  收藏  举报