• 进程的同步控制


    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之后状态还是没变,那么继续,
  • 相关阅读:
    《流畅的Python》Data Structures--第7章 colsure and decorator
    CSS Reset 2.0标准
    Layout
    一个简单的例子 vux mutation改变状态
    __WEBPACK_IMPORTED_MODULE_3_vuex__.a is not a constructor
    vuex 使用
    (转)Vue-初步了解vue-router的三要素:路由map 、路由视图、路由导航
    router-link-active 和 router-link-exact-active router-link-active
    当前目录 根目录 写法
    mode: 'history', 去掉路由地址的#
  • 原文地址:https://www.cnblogs.com/wy3713/p/9366852.html
Copyright © 2020-2023  润新知