1. 什么是进程?
运行起来的应用程序就称之为进程。也就是说当程序不运行的时候我们称之为程序,当程序运行起来他就是一个进程。通俗的理解就是不运行的时候是程序,运行起来的就是进程,程序和进程之间的对应关系是:程序只有一个,但是进程可以有个。(进程是系统进行资源分配和调度的基本单位)
2.创建多进程
from multiprocessing import Process
count=0
def hanshu1():
global count
for i in range(10000):
count=count+1
print("函数1",count)
def hanshu2():
global count
for i in range(10000):
count+=1
print("函数2",count)
if __name__ == '__main__':
t1=Process(target=hanshu1)
t2=Process(target=hanshu2)
t1.start()
t2.start()
结果:函数2 10000
函数1 10000
3.进程的状态
(1)就绪状态:当进程已分配到CPU以外的所有必要资源,只要获得处理机制便可立即执行,这个状态就称为就绪状态。
(2)执行状态:当进程已获得处理机制,其程序正处在处理机上执行,这个状态就称为执行状态。
(3)阻塞状态:正在执行的进程,由于的等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。(引起进程阻塞的事件可有多种,如:等待I/O完成、申请缓冲区不能满足、等待信件(信号)等)
进程状态转换图:
Queue队列
put()向队列中存放数据,如果队列已满,此方法将阻塞至友空间为止
get()返回q中的一个项目。如果q为空,此方法将阻塞,直到队列中有项目可用为止
q.qsize()判断项目的大小
5.进程池
我们可以使用multiprocessing模块提供Pool类,也就是进程池,可以达到进程重复利用。
join主进程等待所有子进程执行完毕,必须在close。
close等待所有进程结束才关闭线程池。
6.线程
进程是资源分配的最小单位,线程是cpu调度的最小单位。(进程中的所有线程共享进程中的所有资源)