第四十六天 关于进程的很多东西

发布时间 2023-06-04 13:53:08作者: 暧昧的花蝴蝶

一、昨日内容回顾

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__子代码中
"""