一、查看计算机一次可以运行的最大进程数

一次可以运行的最大进程数受计算机上处理器数量的限制。查询计算机上处理器的数量,如下:

import multiprocessing as mp

print("Number of processors:", mp.cpu_count())

在这里插入图片描述

二、开始并行化之前需要注意

multiprocesssing在Ipython控制台起作用,但在Jupyter Notebook中不起作用。

三、Pool Class

可以使用n个处理器初始化Pool,然后将要并行化的函数传递给one of Pools parallization methods.。multiprocessing。Pool()类产生了一组称为worker的进程,可以使用apply()/apply_async()和map()/map_async()方法提交任务。

四、并行化的举例

1.

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(12) as p:        
        print(p.map(f, [1, 2, 3]))

控制台结果:
在这里插入图片描述

2.并行化的进度条显示

from multiprocessing import Pool
from tqdm import tqdm

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(12) as p:
        result = list(tqdm(p.map(f, [1, 2, 3]), total=3))
    print(result)

控制台结果:
在这里插入图片描述
map是一次性返回所有子进程的返回值, 自带close,join

from multiprocessing import Pool
from tqdm import tqdm

def f(x):
    return x*x

# 第一种:直接进行多进程
if __name__ == '__main__':
    with Pool(12) as p:
        # print(p.map(f, [1, 2, 3]))            # 这里是输出最后的结果
        print(type(p.map(f, [1, 2, 3])))        # 这里查看一下p.map()的返回值类型   <class 'list'>

# 第二种:给多进程进行进度条显示
# if __name__ == '__main__':
#     with Pool(12) as p:
#         result = list(tqdm(p.map(f, [1, 2, 3]), total=3))
#     print(result)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐