python 学习日记 第35天 并发——进程
一、什么是进程?
1. 进程(Process): 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统机构的基础
2.进程的组成:
a.代码段: 用来描述进程要完成那些功能以及如何完成
b.数据段: 程序在执行过程中所需要使用的资源
c.PCB(进程管理控制):记录进程的外部特征,描述进程的执行变化过程,系统可以用它来控制和管理进程,他是系统感知进程存在的唯一标志
3.进程的三大基本状态:
a.就绪状态(Ready):当进程已分配到除Cpu以外的所有必要资源,只要获得Cpu便可立即执行,称为就绪状态。
b.执行状态(Running):当进程已获得处理机,该程序正在处理机上执行,此时称为执行状态
c.阻塞状态(Blocked):正在执行的进程,由于某些原因无法执行的时候,便放弃处理机,处于阻塞状态,重新等待获取cpu
4.进程的理论:
a. .sh shell脚本文件
b. .out linux系统中的可执行文件
c. .bat 批处理脚本文件
d. .lib 库文件
e. .dll 库
f. .exe 可执行文件
5.进程的特殊状态----挂起状态:
是指因为某种原因,进程放弃cpu,导致进程无法继续执行,此时进程被踢出内存
6.进程中一些名词的解释:
并发:是指在一段时间段内,所完成的任务叫做
并行:是指在同一时间点下,能够执行任务的数量
同步:是指前一段任务完成的情况下,才能执行后一段的任务
异步:各自任务执行各自任务,相互不受影响
7.python中关于进程中的模块:
在python中,有一个multiprocessing内置模块,由python提供,主要用于多进程编程
调用方法:
1 from multiprocessing import Process
二、关于子进程的实践问题:
1.如何创建一个子进程:
1 from multiprocessing import Process 2 3 4 def func(): 5 pass 6 7 8 if __name__ == '__main__': 9 p = Process(target=func) 10 p.start()
在该段代码中 ,p = Process(target = func) 这句话代表的是实例化一个子进程对象
p.start() 表示开启次子进程
2.进程中常用的方法:
start,join
1 from multiprocessing import Process 2 import time 3 4 def func(): 5 for i in range(500): 6 time.sleep(0.01) 7 print('儿子在这里') 8 9 if __name__ == '__main__': 10 p = Process(target=func) 11 p.start() 12 p.join()# 是让主进程等待子进程执行完。 现象:主进程执行到这句话,主进程阻塞住,等待子进程执行 13 # time.sleep(1) 14 for i in range(100): 15 time.sleep(0.01) 16 print('爸爸在这里') 17 18 # 开启一个正常的子进程,父进程会等待子进程结束后,父进程也就是程序才结束 19 # p.join()# 是让主进程等待子进程执行完。 现象:主进程执行到这句话,主进程阻塞住,等待子进程执行 20 # 如何把父进程和子进程之间的关系变为同步或者异步? 21 # 父进程执行join,就会变成同步,不执行join,父进程和子进程就是异步的关系 22 # join必须放在start()后边
3.进程中常用的属性:
from multiprocessing import Process import time import os def func(): print('这里是儿子,儿子的pid是%s'%(os.getpid())) if __name__ == '__main__': p = Process(target=func) p.start() p.name = 'alex' print('儿子的名字是%s'%p.name) print('儿子的pid是%s'%p.pid) print('儿子是不是守护进程?',p.daemon) # p.name 进程的名字 # p.pid 进程的序号 # p.daemon 看是否是守护进程