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


    课程回顾:

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

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

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

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

      阻塞:  程序因为类似于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

  • 相关阅读:
    hadoop再次集群搭建(3)-如何选择相应的hadoop版本
    48. Rotate Image
    352. Data Stream as Disjoint Interval
    163. Missing Ranges
    228. Summary Ranges
    147. Insertion Sort List
    324. Wiggle Sort II
    215. Kth Largest Element in an Array
    快速排序
    280. Wiggle Sort
  • 原文地址:https://www.cnblogs.com/jerry-hou/p/11973245.html
Copyright © 2020-2023  润新知