博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
守护进程-互斥锁-IPC
阅读量:5349 次
发布时间:2019-06-15

本文共 940 字,大约阅读时间需要 3 分钟。

守护进程?

         就是指用一个进程去守护另一个进程. 守护进程的代码非常简单: p.daemon = True 

         注意:必须在启动进程之前执行

 

什么时候需要使用守护进程?

         例如: qq中有个下载视频   应该用子进程去做 但是 下载的过程中 qq退出  那么下载也没必要继续了

  

 

互斥锁

         什么时候用锁?

             当多个进程 同时读写同一份数据 数据很可能就被搞坏了

            第一个进程写了一个中文字符的一个字节 cpu被切到另一个进程

            另一个进程也写了一个中文字符的一个字节

             最后文件解码失败

        

问题之所以出现 是因为并发 无法控住顺序

             目前可以使用join来将所有进程并发改为串行

 

与join的区别?

    多个进程并发的访问了同一个资源  将导致资源竞争(同时读取不会产生问题 同时修改才会出问题)

    第一个方案 加上join  但是这样就导致了 不公平  相当于 上厕所得按照颜值来

    第二个方案 加锁  谁先抢到资源谁先处理[

    相同点: 都变成了串行

    不同点:

    1.join顺序固定 锁顺序不固定!

    2.join使整个进程的任务全部串行  而锁可以指定哪些代码要串行

 

    锁使是什么?

    锁本质上就是一个bool类型的标识符  大家(多个进程) 在执行任务之前先判断标识符

    互斥锁 两个进程相互排斥

 

    注意 要想锁住资源必须保证 大家拿到锁是同一把

 

怎么使用?

    在需要加锁的地方 lock.acquire() 表示锁定

    在代码执行完后 一定要lock.release() 表示释放锁

    lock.acquire()

    放需要竞争资源的代码 (同时写入数据)

lock.release()

 

 

 

 

进程间的通讯

IPC 指的是进程间通讯

        之所以开启子进程 肯定需要它帮我们完成任务 很多情况下 需要将数据返回给父进程

        然而 进程内存是物理隔离的

    解决方案:

    1.将共享数据放到文件中   这样有点慢

    2.管道   subprocess中的那个  管道只能单向通讯  必须存在父子关系

3.共享一块内存区域  得操作系统帮你分配  速度较快

 

进程间通讯的另一种方式 使用queue

    queue  队列

    队列的特点:

        先进的先出

        后进后出

                   get 和 put的使用

         

转载于:https://www.cnblogs.com/zhouhai007/p/9931524.html

你可能感兴趣的文章
js日志管理-log4javascript学习小结
查看>>
Android之布局androidmanifest.xml 资源清单 概述
查看>>
How to Find Research Problems
查看>>
Linux用户管理
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
使用iperf测试网络性能
查看>>
图片的显示隐藏(两张图片,默认的时候显示第一张,点击的时候显示另一张)...
查看>>
Docker 安装MySQL5.7(三)
查看>>
python 模块 来了 (调包侠 修炼手册一)
查看>>
关于CSS的使用方式
查看>>
分析语句执行步骤并对排出耗时比较多的语句
查看>>
原生JS轮播-各种效果的极简实现
查看>>
计数器方法使用?
查看>>
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>
sonar结合jenkins
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
关于空想X
查看>>
CF1067C Knights 构造
查看>>