python补充之Multiprocessing(四)进程池Pool
上一章写了几个增加运算速度的方法,这一章记录一下进程池Pool,是一个多进程多核运算的方法,可以说是吧CPU发挥到极致的方法了。
下面代码给出演示:
路径:
/home/pi/Desktop/My_Project/Python_Learning/4_MultiprocessingLearning.py
代码:
import multiprocessing as mp
def job(x):
return x*x
def multicore():
pool = mp.Pool(processes=4)
res = pool.map(job, range(10)) #map可以同时放入多个值进行运算,运算结果放入res列表中
print(res)
res = pool.apply_async(job, (2,)) #apply_async只能放入一个值进行运算,运算结果返回res
print(res.get()) #res.get()可以获得job()的返回值,可以返回多个,赋值给多个变量
#如果想用apply_async进行多值运算,可以参考以下的方法
multi_res =[pool.apply_async(job, (i,)) for i in range(10)]
print([res.get() for res in multi_res])
if __name__ == '__main__':
multicore()
在终端中:
pi@raspberrypi:~ $ cd /home/pi/Desktop/My_Project/Python_learning
pi@raspberrypi:~/Desktop/My_Project/Python_learning $ python3 4_MultiprocessingLearning.py
结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
4
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
方法还是比较简单的,看样子树莓派帧数问题的解决指日可待了。
至此就结束了,希望可以帮助到大家!