• 信号量 事件 锁 守护进程


    什么是进程?

    进程是计算机中最小的资源分配单位

    进程与进程之间数据隔离,执行过程异步

    为什么会出现进程的概念?

      合理利用cpu ,提高用户体验

      多个进程是可以同时利用多个CPU的,可以实现并行的效果

    在主进程中控制子进程的方法?

     子进程对象 = Process(target,args)   在创建的这一刻根本就没有通知操作系统

    子进程对象.start()  通知操做系统,开启子进程,异步非阻塞

    子进程对象.terminate()   通知操作系统,结束子进程,异步非阻塞

    子进程对象.is_alive()   查看进程及是否还活着

    子进程对象.join()  阻塞,直到子进程结束

    子进程对象.join(timeout = 10) 阻塞最多10s,期间子进程如果结束就结束阻塞,如果没结束10s之后也结束阻塞

    信号量:

      对于锁 保证一段代码同一时刻只能有一个进程执行

      对于信号量 保证一段代码同一时刻只能有n个进程执行

      流量控制

      10个进程

     

    守护进程

         守护进程是一个子进程
    守护进程会在主进程代码结束之后才结束
    为什么会这样?
    由于主进程必须要回收所有的子进程的资源
    所以主进程必须在子进程结束之后才能结束
    而守护进程就是为了守护主进程存在的
    不能守护到主进程结束,就只能退而求其次,守护到代码结束了
    守护到主进程的代码结束,意味着如果有其他子进程没有结束,守护进程无法继续守护
    解决方案 : 在主进程中加入对其他子进程的join操作,来保证守护进程可以守护所有主进程和子进程的执行
    如何设置守护进程
    子进程对象.daemon = True 这句话写在start之前

    为什么要用锁?
    由于多个进程的并发,导致很多数据的操作都在同时进行
    所以就有可能产生多个进程同时操作 : 文件数据库 中的数据
    导致数据不安全
    所以给某一段修改数据的程序加上锁,就可以控制这段代码永远不会被多个进程同时执行
    保证了数据的安全
    Lock 锁(互斥锁)
    锁实际上是把你的某一段程序变成同步的了,降低了程序运行的速度,为了保证数据的安全性
    没有数据安全的效率都是耍流氓
  • 相关阅读:
    在JS和.NET中使用JSON (以及使用Linq to JSON定制JSON数据)
    转载JSON格式化工具
    bzoj3771 Triple
    hdu 2082 找单词
    bzoj 3143: [Hnoi2013]游走
    Wannafly挑战赛17 B
    基尔霍夫矩阵
    矩阵&行列式
    luogu P2421 [NOI2002]荒岛野人
    bzoj 2818: Gcd
  • 原文地址:https://www.cnblogs.com/liurenli/p/10097699.html
Copyright © 2020-2023  润新知