一:进程间的通信(IPC):先进先出  管道:队列=管道+锁 from multiprocessing import Queue q=Queue(4) q.put(['first',],block=True,timeout=3) q.put({'x':2},block=True,timeout=3) q.put(3,block=True,timeout=3) q.put(4,block=True,timeout=3) print(q.get(block=True,timeout=3)) prin…
1.进程 正在进行的一个过程或者说一个任务.负责执行任务的是cpu 进程(Process: 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体.我们自己在python文件中写了一些代码,这叫做程序,运行这个python文件的时候,这叫做进程. 狭义定义:进程是正在运行的程序的实例…
一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终端 #并发运行,效率高,但竞争同一打印终端,带来了打印错乱 from multiprocessing import Process import os,time def work(): print('%s is running' %os.getpid()) time.sleep(2) print('…
一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终端 #并发运行,效率高,但竞争同一打印终端,带来了打印错乱 from multiprocessing import Process import os,time def work(): print('%s is running' %os.getpid()) time.sleep(2) print('…
1  守护进程: 主进程 创建 守护进程   辅助主进程的运行 设置进程的 daemon属性 p1.daemon=True 1 守护进程会在主进程代码执行结束后就终止: 2 守护进程内无法再开启子进程,否则抛出异常: AssertionError: daemonic processes are not allowed to have children 注意:进程之间是互相独立的,主进程代码运行结束,守护进程随即终止 from multiprocessing import Process impo…
一.IPC(进程间通信)机制进程之间通信必须找到一种介质,该介质必须满足1.是所有进程共享的2.必须是内存空间附加:帮我们自动处理好锁的问题 a.from multiprocessing import Manager(共享内存,但要自己解决锁的问题)b.IPC中的队列(Queue) 共享,内存,自动处理锁的问题(最常用)c.IPC中的管道(Pipe),共享,内存,需自己解决锁的问题#d. 文件,共享,硬盘,需要自己解决锁的问题a.用Managerfrom multiprocessing impo…
守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children 注意:进程之间是互相独立的,主进程代码运行结束,守护进程随即终止 from multiprocessing import Process import time import random class Piao(Process): def…
'''1,什么是生产者消费者模型 生产者:比喻的是程序中负责产生数据的任务 消费者:比喻的是程序中负责处理数据的任务 生产者->共享的介质(队列)<-消费者 2,为何用 实现了生产者与消费者的解耦合,生产者可以不停地生产,消费者也可以不停地消费 从而平衡了消费者地生产能力与消费能力,提升了程序整体运行地效率 什么时候用? 当我们地程序中存在明显的两类任务,一类负责产生数据,另一类负责处理数据 此时我们就应该考虑使用生产者消费者模型来提升程序地效率 '''from multiprocessing…
1.队列的使用: 队列引用的前提: 多个进程对同一块共享数据的修改:要从硬盘读文件,慢,还要考虑上锁: 所以就出现了 队列 和 管道 都在内存中(快): 队列 = 管道 + 上锁 用队列的目的: 进程间通信(IPC),队列可以放任意类型的数据,应该放小东西, q = Queue(3) get put full empty 队列作用: 多个进程之间通信使用的,一个进程将数据放到队列里面,另外一个进程从队列里面取走数据,干的是进程之间通信的活 from multiprocessing import…
昨日内容回顾 操作系统发展史 1.穿孔卡片 CPU利用率极低 2.联机批处理系统 CPU效率有所提升 3.脱机批处理系统 CPU效率极大提升(现代计算机雏形) 多道技术(单核CPU) 串行:多个任务依次排队执行 多道:切换+保存状态 进程理论 程序与进程的区别 程序是死的进程是活的 进程的调度算法 先来先服务 短作业优先 时间片轮转法+多级反馈队列 进程的三状态 就绪态 运行态 阻塞态(只有经过就绪态的进程才能进入运行态) 任务的提交方式 同步:提交完任务之后原地等待任务的结果 期间不做任何事情…