一、昨日内容回顾
UDP协议
UDP TCP
recvfrom() recv()
sendto() send()
操作系统发展史
1.穿孔卡片
2.联机批处理
3.脱机批处理
# 一步步提高CPU的工作效率
多道技术
'''研究的前提是只有一个CPU'''
1.串行
多个程序依次排队执行 效率低 但是有一个优点(后面再说)
2.多道
利用IO操作的间隙: 切换 + 保存状态
多道想要实现的目标其实就是'并发'
进程理论
# 1.进程与程序的区别
程序是一堆没有被允许的代码
进程是正在执行的程序
# 2.进度调度算法
先来先服务
短作业优先
时间片轮转法+多级反馈队列
# 1.并发与并行
并发:看上去像同时在执行就可以称之为是并发(单个CPU就可以)
并行:必须同一时间同时执行(必须要有多个CPU才可以)
ps:以后我们写软件都会用一个名词来表示自己写的软件有多牛逼
并发量: 1千万 2千万 3千万 (越多越牛逼)
"""
星轨:明星出轨
微博以前只要有明星出轨就会立刻蹦掉 后续一直在优化
现在微博号称可以同时架得住八个星轨(八个明星出轨)都不会蹦
ps:行业中有时候也会用星轨来表示软件的并发量
"""
# 2.同步与异步
'''描述的是任务的提交方式'''
同步:提交完任务之后原地等待任务的结果 期间不做任何事
异步:提交完任务之后不原地等待结果 结果通过反馈机制获取
# 3.阻塞与非阻塞
'''描述的是任务的执行状态'''
阻塞:阻塞态
非阻塞:就绪态 运行态
ps:如果要追求极致的效率 那么应该让程序一直处于非阻塞态
二、代码创建进程
创建进程的两种方式
"""
创建进程的方式有哪些
1.鼠标双击桌面一个应用图标
2.代码创建
创建进程的本质:在内存中申请一块内存空间用于运行相应的程序代码
"""
# 第一种创建进程的方式
from multiprocessing import Process
import time
def task(name):
print('%s is running' % name)
time.sleep(3)
print('%s is over' % name)
if __name__ == '__main__':
p = Process(target=task, args=('jason',)) # 创建一个进程对象
p.start() # 告诉操作系统创建一个新的进程
print('主进程')
"""
强调:不同的操作系统创建进程的要求不一样
在windows中创建进程是以导入模块的方式进行 所以创建进程的代码必须写在__main__子代码中
否则会直接报错 因为在无限制创建进程
在linux和mac中创建进程是直接拷贝一份源代码然后执行 不需要写在__main__子代码中
"""
标签:__,创建,阻塞,CPU,并发,关于,进程,第四十六
From: https://www.cnblogs.com/tuq2791/p/17455596.html