一、进程是什么?
1、定义
一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。
Pass:进程是资源分配的最小单位,线程是cpu调度的最小单位
2、进程中的状态
工作中,任务数往往大于CPU核数,也就是说有部分任务正在执行,也有另一部分任务正在等待CPU进行执行,也就出现了不同的状态。
五种进程状态:新建、就绪、堵塞、运行、死亡
- 就绪态:运行的条件都已经满足,等待CPU执行
- 执行态:正在执行的进程
- 等待态:满足运行条件之后,等待CPU执行
二、创建进程
1、常用的属性 name pid
import os # 多种操作系统接口模块
from multiprocessing import Process #在multiprocessing模块中导入process类
def f1():
print(f'f1子进程的id是{
os.getpid()},父进程id为{
os.getppid()}')
def f2():
print(f'f2子进程的id是{
os.getpid()},父进程id为{
os.getppid()}')
if __name__ == '__main__':
# 创建子进程
p1 = Process(target=f1)
p2 = Process(target=f2)
# 启动进程
p1.start()
p2.start()
# 修改进程名
p1.name = 'our'
print('p1的子进程名是',p1.name)
print(f'主进程的id是{
os.getpid()},父进程id为{
os.getppid()}')
# 结果:
# p1的子进程名是 our
# 主进程的id是18532,父进程id为7904
# f1子进程的id是1632,父进程id为18532
# f2子进程的id是26292,父进程id为18532
2、常用的方法 is_alive()和join()
start()启动
is_alive()判断进程子进程是否还活着,如果存活则返回True,否则为False;
join() 阻塞
terminate()不管任务是否完成,立即终止进程
例子1:
from multiprocessing import Process
def study(name):
print(f'{
name}学习很认真')
def smile(name):
print(