python补充之Multiprocessing(四)进程池Pool

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]

方法还是比较简单的,看样子树莓派帧数问题的解决指日可待了。

至此就结束了,希望可以帮助到大家!

猜你喜欢

转载自blog.csdn.net/weixin_44086593/article/details/87554875