CSIC_716_20191206【并发编程理论基础】
进程:正在执行的一个过程,进程是对正在执行过程的一个抽象。区别于程序,
进程的三种状态: 进程是动态的。
就绪态ready: 进程具备运行状态,等待操作系统分配处理器
运行状态running:进程正在占用处理器运行。 运行态的进程当遇到IO时,就会变成阻塞态,当超过时间片时,会变成就绪态
阻塞态blocked:进程不具备运行条件,正在等待某个事件的完成
python中开启多个进程的方法:
1、定义函数方式,开启新的子进程,但是没有手动回收子进程,注意:如果主进程和子进程能正常结束,则进程都会被回收,可以通过操作系统查看PID号。主进程和子进程是异步的。
from multiprocessing import Process
import time def task(name):
print(f'start..{name}..')
time.sleep(3)
print(f'end..{name}...') if __name__ == '__main__':
# Process()实例化的时候,args代表target所指函数中的参数,如果没有参数,就不需要args
pro_obj = Process(target=task, args=('reax',)) # 定义元祖,如果只有一个元素,一定要加逗号
pro_obj.start()
print('start主进程')
2、开启新的子进程,并回收子进程,此时,主进程一定会等子进程执行完成,进程回收之后 join( )。
def task(name):
time.sleep(4)
print(f'start..{name}..')
time.sleep(3)
print(f'end..{name}...') if __name__ == '__main__':
# Process()实例化的时候,args代表target所指函数中的参数,如果没有参数,就不需要args
pro_obj = Process(target=task, args=('reax',)) # 定义元祖,如果只有一个元素,一定要加逗号
pro_obj.start()
pro_obj.join()
print('start主进程')
3、通过继承Process类实现。
from multiprocessing import Process
import time class MyProcess(Process):
def run(self):
print(f'start...{self.name}的子进程')
time.sleep(3)
print(f'end...{self.name}的子进程') if __name__ == '__main__':
list1 = [] for line in range(2):
obj = MyProcess()
obj.start()
list1.append(obj) for obj in list1:
obj.join() print('主进程...')
多道技术:是针对一个CPU而言,
时间的复用:遇到IO或者时间占用过长时,会保留当前进程的状态,切换进程。 优点:CPU使用率高;缺点:程序执行效率低
空间的复用:一个CPU可以提供给多个进程使用。
并发:针对CPU的一个核,通过不停切换进程,造成多个进程同时运行的假象,实现伪并行。----->单核+多道技术,就可以实现并发
并行:真正实现多个进程同时运行。一定要多核。
同步:必须要等主动获取。
异步:等通知或者函数回调。
阻塞:进程挂起,什么都不做。
非阻塞:进程未挂起,还可以处理其他事。
异步同步反映的是执行者执行方式,同步表示执行者主动查询,异步表示自己不主动查询而是等待消息等机制通知。
阻塞非阻塞反映的是执行者执行状态,阻塞表示执行者等待,非阻塞表示执行者不等,而是去做其他事情。
同步阻塞、同步非阻塞、异步阻塞、异步非阻塞:
拿网上老张喝茶为例子: 同步阻塞: 老张把水壶放到火上,立等水开 同步非阻塞: 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有 异步阻塞: 老张买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。老张把响水壶放到火上,立等水开 异步非阻塞: 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶 总结: 异步同步反映的是执行者执行方式,同步表示执行者主动查询,异步表示自己不主动查询而是等待消息等机制通知。 阻塞非阻塞反映的是执行者执行状态,阻塞表示执行者等待,非阻塞表示执行者不等做其他事情。
CSIC_716_20191206【并发编程理论基础】的更多相关文章
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- python3全栈开发-补充UDP的套接字、操作系统、并发的理论基础
一.基于UDP的套接字 udp套接字简单示例 import socket ip_port=('1.1.1.1',8181) BUFSIZE=1024 udp_server_client=socket. ...
- python之并发编程
一 背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...
- day20-多并发编程基础(一)
重新写一下吧,系统奔溃了,以前写的完全没了,悲催,今日主要写进程 1. 进程的理论知识 2. python中的进程操作 开始今日份整理,加油,你是最胖的!!! 1. 进程的理论知识 1.1 操作系统的 ...
- python下的并发编程
阅读目录 一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 七 作业 ...
- Cpython解释器下实现并发编程
一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 七 作业 一 背景 ...
- Cpython解释器下实现并发编程——多进程、多线程、协程、IO模型
一.背景知识 进程即正在执行的一个过程.进程是对正在运行的程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都 ...
- python之旅:并发编程
一 背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...
- 多并发编程基础 之进程 Process
原贴 https://www.cnblogs.com/gbq-dog/p/10299663.html 1. 进程的理论知识 1.1 操作系统的背景知识 顾名思义,进程即正在执行的一个过程.进程是对正 ...
随机推荐
- HTML CSS的中英文对照
python 大蟒蛇 downloads 下载 install 安装 customize 自定义 path 环境变量:路径 optional 可选的 feature 特性特点 documentatio ...
- Nodejs常用代码段
1、利用createReadStream方式计算大文件的md5签名 const fs = require('fs'); const crypto = require('crypto'); let pa ...
- 3、Python 基础类型 -- List 列表类型
2.更新列表:list.append() 3.删除列表元素 del
- 【TJOI2018】教科书般的亵渎
题面 题目描述 小豆喜欢玩游戏,现在他在玩一个游戏遇到这样的场面,每个怪的血量为\(a_i\),且每个怪物血量均不相同,小豆手里有无限张"亵渎".亵渎的效果是对所有的怪造成11点伤 ...
- springcolud依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...
- 云原生数据库崛起,阿里云POLARDB当选世界互联网领先科技成果!
第六届世界互联网大会来了!千年水乡古镇乌镇又一次吸引了全世界的目光. 刚刚,阿里云自研数据库POLARDB在会上当选世界互联网领先科技成果.POLARDB解决了企业在云时代的数据库难题,帮助企业在数小 ...
- 什么是 CSS?
什么是 CSS? CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与 ...
- PHP ftp_connect() 函数
定义和用法 ftp_connect() 函数打开 FTP 连接. 当连接打开后,您就可以通过服务器来运行 FTP 函数了. 语法 ftp_connect(host,port,timeout) 参数 描 ...
- cf期望概率专题
cf1009E:求到第i段期望和的比较困难,但是单独求每段的期望是比较容易的,所以单独对每段求和,然后累计总和 E[i]=1/2*a1+1/4*a2+...+1/2^(i-1)*ai-1+1/2^(i ...
- [bzoj3033]太鼓达人 题解(搜索)
Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...