守护进程
一个进程可以设为另一个进程的守护进程
特点是:被守进程结束时,守护进程也会随之结束
父进程交给子进程一个任务,然而父进程先与子进程结束了,子进程的任务也就没必要继续执行了
p.daemon = True
互斥锁
互斥 互相排斥
锁的本质就是一个标志 这个标志有两个状态 一个为锁定 一个为未锁定
什么时候用 ,当多个进程要操作同一个资源时,就会造成数据错乱 , 通常将写入操作加锁 ,读取操作不需加
加锁会把原本并发的任务,修改为串行 ,降低了效率 ,保证了数据的安全性
锁可以指定一部分代码串行,其他任然可以并发
加锁的位置,是需要重点考虑的问题
join 也可以将任务变为串行
join固定任务的执行顺序
join会会使得子进程的代码全部串行 ,并且主进程也会阻塞住
注意:
1.要保证安全必须保证大家用的都是同一把锁
2.不能对一把锁连续执行acquire 将会导致锁死
IPC
进程间通讯
1.管道 单向通讯 ,传输的是二进制
2.共享文件 数据量几乎不受限制,但是速度慢
3.共享内存 数据量较小 但是速度快
4.socket 编程复杂 传输的是二进制
最主要的方式就是共享内存
1.Manager() 作为了解
2.Queue 必须掌握的方式 是一个种数据容器 其特点是先进先出 并且进程中的队列 可以共享数据,自带锁机制
生产者消费者模型
要解决的问题: 生成者与消费者能力不平衡,导致效率低
如何解决的:
1.把生成方和消费分解开耦合,即把任务分到不同进程中 各司其职
2.分开后,由于进程之间相互隔离,所以需要一个共享的容器,Queue 闪亮登场
解决了数据交换的问题 和锁的问题