两行代码实现python多进程并行计算

简介

并行计算的方法有许多,在科学计算中“单指令多数据”式的进程级别的并行计算经常使用,可以显著提升代码执行循环语句的速度。

python内置的multiprocessing库可以实现循环语句的并行化,不过这里使用的是map而不是for,其本质相同。

并行化的核心代码就两行:

with Pool(thread_num) as p:
    outputs = p.map(dosomething, inputs)# 调用dosomething,将自变量向量转变为因变量向量

thread_num是进程数量
map方法可将inputs列表映射到outputs列表,映射关系由dosomething函数定义

完整代码

from multiprocessing import Pool
import time

# 任意函数
def dosomething(input):
    for i in range(100000):
        i += 1
    print(input)
    return input

# 函数自变量向量
inputs = [i for i in range(0,1000)]

T1 = time.time()

thread_num=6 # 调用进程数量
with Pool(thread_num) as p:
    outputs = p.map(dosomething, inputs)# 调用dosomething,将自变量向量转变为因变量向量

T2 = time.time()
print('程序运行时间:%s秒' % ((T2 - T1)))

计算可知thread_num=6耗时0.55秒,而thread_num=1耗时2.48秒,提速比达到4.5

你可能感兴趣的:(人工智能,解决方案,库,python,开发语言)