进程
# 内容回顾
操作系统
操作系统负责调度进程,控制执行顺序,执行时间.负责资源分配
- 多道操作系统
- 分时操作系统
- 实时操作系统
进程
- 运行的程序就是一个进程
- 进程的调度
- 由操作系统完成进程调度
- 进程的三种状态(图)
- 就绪,阻塞,运行
同步&异步
- 同步:(洗剪吹)调用一个方法要等待这个方法结束
- 异步:(理发玩手机)调用一个方法,不用等待这个方法结束,互不干扰
阻塞非阻塞
- 阻塞:cpu不工作
- 非阻塞:cpu工作
并发&并行
- 并发:多个程序轮流使用一个cpu,轮流执行
- 并行:多个程序,一个程序在一个cpu上运行,多个程序同时进行.
#小明自己觉得自己是"main",别人觉得他是小明!
__name__=='__main__'
#执行文件就是__name__所在的文件
__name__=='__文件名__'
#执行的文件时是导入的模块
1
2
3
4
5
2
3
4
5
# 1. 认识线程
- 进程是计算机中最小的资源分配单位,主要功能对数据进行隔离
- 创建进程和销毁进程,进程之间切换时间开销很大
线程
线程是进程的一部分
所有进程至少有一个线程,线程进行执行代码,不存储代码,进程是计算机中最小的资源分配单位,主要功能对数据进行隔离
进程是计算机中最小的资源分配单位,线程是计算机中能被cpu调度的最小单位. * * *
线程的创建也需要一些开销.
- 线程的创建/销毁/切换时间开销都远远小于进程
# 2.进程
# 2.1 multiprocessing模块
multiple 多元的 processing 进程
os.getpid() 查看程序pid
主进程-->子进程
pycharm进程里的程序都是charm的子进程
主进程负责回收子进程的资源,如果子进程执行结束,父进程未回收资源,则该子进程变成僵尸进程
主进程和子进程之间数据隔离
主进程的结束逻辑:
- 主机进程开启
- 所有子进程结束
- 给子进程回收资源
- 主进程结束
进程进程之间联系是基于文件的
#子进程开启方法 import os import time from multiprocessing import Process def func(): print('start',os.getpid()) time.sleep(1) print('end',os.getpid()) if __name__=='__main__': p=Process( target=func) p.start() print('main:',os.getpid())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 2.2 join方法
阻塞,直到子进程结束就结束
同步阻塞,直到对应的子进程结束之后结束阻塞
from multiprocessing import Process def send_mile(): print('发送完毕') if __name__ == '__main__': lis=[] for i in range(10): p = Process(target=send_mile) p.start() lis.append(p) for p in lis: p.join() print('start异步')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
上次更新: 2023/04/16, 18:35:33