zoukankan      html  css  js  c++  java
  • 进程的同步控制

    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基础之列表功能
    python基础之字符串基本功能
    Linux服务器上搭建codis集群之——安装前环境准备
    centos7环境开启WIFI热点
    升级glibc、gcc、zlib等
    修复Nginx 502错误:upstream sent too big header while reading response header from upstream
    PS 命令详解
    Linux下网络文件系统NFS服务搭建易错点总结
    2020美赛建模竞赛一等奖经验心得分享
    团队获奖总结
  • 原文地址:https://www.cnblogs.com/wy3713/p/9366852.html
Copyright © 2011-2022 走看看