python基础-并发编程part01
并发编程
操作系统发展史
- 穿孔卡片
- 读取数据速度特别慢,CPU利用率极低
- 单用户使用
- 批处理
- 读取数据速度特别慢,CPU利用率极低
- 联机使用
- 脱机批处理(现代操作系统的设计原理)
- 读取数据速度提高
- CPU的利用率提高
多道技术(基于单核背景下产生的)
- 单道(串行):一个任务完完整整地运行完毕后,才能运行下一个任务
- 多道技术:允许多个程序同时进入内存并运行。同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
多道技术的实现是为了解决多个程序竞争或者说共享同一个资源的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
空间上的复用:多个程序使用一个CPU(多个进程复用内存空间)
时间上的复用:多个进程复用CPU的时间
当执行程序遇到IO时,操作系统会将CPU的执行权限剥夺
优点:CPU的执行效率提高
当执行程序执行时间过长时,操作系统会将CPU的执行权限剥夺
缺点:程序的执行效率低
并发与并行
- 并发:是伪并行,即看起来是同时运行。单个CPU+多道技术就可以实现并发
- 并行:同时运行,只有具备多个CPU才能实现并行
无论是并行还是并发,在用户看来都是“同时”运行的。不管是进程还是线程,都只是一个任务而已,真正工作的只有CPU。一个CPU同一时刻只能执行一个任务。
程序、进程和线程
程序:一系列代码文件组成
进程:一个正在运行的程序的一个实例。包括程序代码和当前的活动
线程:CPU可使用的最基本单元。 也成为轻量级进程。线程是进程中的一个实体。 线程是进程中的指令序列,其行为类似于进程。不同于进程是因为它没有自己的程序控制块。
ps:通常,在进程中创建多线程。线程在进程内执行,进程在操作系统内核中执行。
进程的三种状态
就绪态:具备运行的所有条件,逻辑上可以运行,等待CPU处理
等待(阻塞)态:等待某一事件
运行态:正在占用处理器运行
进程调度
- 先来先服务调度算法。缺点:执行效率低
- 短作业优先调度算法,执行时间越短,则优先调度。缺点:导致执行时间长的程序,需要等待所有时间短的程序执行完毕后,才能执行
- 时间片轮转法
- 多级反馈队列
同步与异步?
同步:?
异步:?
阻塞与非阻塞?
阻塞:凡是遇到IO都会阻塞
非阻塞:除了IO都是非阻塞
python基础-并发编程part01的更多相关文章
- python基础-并发编程02
并发编程 子进程回收的两种方式 join()让主进程等待子进程结束,并回收子进程资源,主进程再结束并回收资源 from multiprocessing import Process import ti ...
- python基础-网络编程part01
软件开发架构 C/S(Client / Server) 架构 概念:是一种软件系统体系结构.Client是客户端,Server是服务端.客户端需要安装专用的客户端软件. 比如:微信.QQ.王者荣耀等应 ...
- python基础-函数式编程
python基础-函数式编程 高阶函数:map , reduce ,filter,sorted 匿名函数: lambda 1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层 ...
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- Python 3 并发编程多进程之进程同步(锁)
Python 3 并发编程多进程之进程同步(锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,竞争带来的结果就是错乱,如何控制,就是加锁处理. 1. ...
- Python 3 并发编程多进程之守护进程
Python 3 并发编程多进程之守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemo ...
- Python 3 并发编程多进程之队列(推荐使用)
Python 3 并发编程多进程之队列(推荐使用) 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 可以往 ...
- python 基础网络编程2
python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...
- python 基础网络编程1
python 基础网络编程1 Source code: Lib/socketserver.py lib的主目录下有一个sockserver.py文件, 里面是python基本的网络编程模型 共有一个b ...
随机推荐
- 第三十一章 System V信号量(二)
用信号量实现进程互斥示例 #include <unistd.h> #include <sys/types.h> #include <stdlib.h> #inclu ...
- linux sudo root 权限绕过漏洞(CVE-2019-14287)
0x01 逛圈子社区论坛 看到了 linux sudo root 权限绕过漏洞(CVE-2019-14287) 跟着复现下 综合来说 这个漏洞作用不大 需要以下几个前提条件 1.知道当前普通用户的密 ...
- CMMS系统中的物联监测
有条件的设备物联后,可时实查看设备运行状态,如发现异常,可提前干预.
- Dijkstra算法 笔记与思路整理
该文章可能存在硬伤与不妥,不能作为教程阅读.(因为我真的鶸 Dij作为单源最短路算法,需要先确定一个起点.Dij的函数主体为维护每个节点的dis和vis两个变量.dis表示该点距离起点的最短路权值和, ...
- 使用float设置经典的网站前端结构
float浮动是能使得标签脱离文档流,此处脱离文档流,是指此便签后面的,没有脱离文档流的标签将此标签当作透明,按正常来布局. float脱离文档流,是受到父级范围限制的,在父级范围内脱离文档流,脱离文 ...
- 我把数表A了
真kx 之前打一棵沙雕主席树,复杂度和正解一毛一样,结果常数爆炸了! 我一直天真的认为卡卡常这题就能AC,然后卡常卡到死也没A掉,极限数据大概跑了1.1s 今天终于打正解了,离线处理,可以用常数更小的 ...
- PTA刷题记录(1)
团队天梯赛-------(2)分值:20 题目要求:你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状” ...
- Ubuntu18.04.3 LTS初体验
安装系统 想来虚拟机安装太慢,正好有一台旧电脑,干脆整个乌班图系统. 启动盘工具:UltraISO,老牌工具了. 上官网下载ISO镜像文件: https://cn.ubuntu.com/downloa ...
- pug参考文档
1. API express框架的渲染模板有多种选择,官方的例子是Pug,网上找了一下,Pug没有可以参考的中文文档,于是自己动手丰衣足食.翻译水平一般,各位凑合着看吧. 1.1 开始 安装 通过np ...
- 《JAVA 程序员面试宝典(第四版)》之循环、条件、概率
分享内容:关于集合的使用 书页号码:77页 题目:一个字符串中包含a~z中的多个字符,如有重复,如String data = "aavzcadfdsfsdhshgwasdfasd ...