多进程,是多任务的另一种方式,python的multiprocess模块是实现多线程的模块,Process类是关键类
进程的概念
进程,是程序的一次执行过程,是操作系统资源分配的最小单位。
对于windows系统,可以在任务管理器中查看当前运行的所有进程。linux一般使用ps命令查看
当程序加载到内存开始,到从内存中释放,是进程的生命周期。
程序,是一个静态概念,指的是编写好的代码,保存在硬盘上,而进程是动态的,存在内存中。
一个程序,可以对应一个或多个进程,例如同时运行多个qq,多个进程之间可能有父子关系。使用multiprocess创建的多进程就存在父子关系,但父进程可以先死亡,子进程不会被杀死。(注意线程是不可以的)
进程与线程之间,也是一对多的关系。一个进程可以只有一个线程,也可以有多个线程,线程是资源调度(cpu)的最小单位。
多进程实例
导入multiprocess模块,使用Process类创建一个进程,调用start方法启动该进程
多进程与多线程代码很相似,参数指定一个方法,或继承process类
import multiprocessing
import time
def test1():
while True:
print("test1------" + str(1))
time.sleep(1)
def test2():
while True:
print("test2---" + str(2))
time.sleep(1)
def main():
t1 = multiprocessing.Process(target=test1, )
t2 = multiprocessing.Process(target=test2, )
t1.start()
t2.start()
while True:
print("main--" + str(3))
time.sleep(1)
if __name__ == "__main__":
main()
杀死其中一个进程,其他进程不会受影响,杀死父进程后,子进程变成孤儿进程,会被操作系统托管而不被终止。
除了线程,进程,还有协程,在后续的章节中会了解到。