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