天天看点

多进程(Multiprocessing)

多进程(Multiprocessing) 源自莫烦python多进程教学

一、多进程的定义和优点

多进程相当于多核处理,它能弥补threading的缺点 即它可以把任务平均分配给每一个核,并且让它们同时进行。

二、添加进程

添加进程和join功能都与threading一样

多进程(Multiprocessing)

三、储存进程输出Queue

多进程中也不可以用return来返回,所以我们同样要先把他存到Q里面再输出

先定义一个函数job,并把这个函数通过多线程进行计算,把结果放到q里面,再用res来打开q,最后输出res

多进程(Multiprocessing)

输出

多进程(Multiprocessing)

四、比较多进程、多线程和什么都不用的速度

结果肯定是多进程最快,另外两个就没准了

多进程(Multiprocessing)
多进程(Multiprocessing)

由输出可知 normal用时:1.7

多线程用时:1.17

多进程用时:1.04

所以可以看出多线程最短

五、 进程池pool

进程池就是你把所有的要运行的东西放到一个池子里面去,python会帮你自动分配各个步骤,并且在pool里面我们可以得到返回值(return)

具体的操作都在图片里面

多进程(Multiprocessing)

输出

多进程(Multiprocessing)

六、共享内存 shared memory

举个例子,一个CPU上有4个核,这四个核不能共享(比如说:第一个cpu给这个a加了2,再给下一个CPU进行操作是不可以的),所以要用到shared memory

我先放个CPU的图

多进程(Multiprocessing)
多进程(Multiprocessing)

七、lock 进程锁

假如没用lock

多进程(Multiprocessing)

输出

多进程(Multiprocessing)

不用lock,输出的结果就比较麻烦,所以我们用进程锁,加进程锁的方法跟多线程的方法一样

多进程(Multiprocessing)

再输出

多进程(Multiprocessing)

由于多线程和多进程一样,所以本课笔记比较简单