Python并行处理
一、查看计算机一次可以运行的最大进程数一次可以运行的最大进程数受计算机上处理器数量的限制。查询计算机上处理器的数量,如下:import multiprocessing as mpprint("Number of processors:", mp.cpu_count())二、开始并行化之前需要注意multiprocesssing在Ipython控制台起作用,但在Jupyter Notebook中不起
·
一、查看计算机一次可以运行的最大进程数
一次可以运行的最大进程数受计算机上处理器数量的限制。查询计算机上处理器的数量,如下:
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)
更多推荐
已为社区贡献3条内容
所有评论(0)