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

发布时间:2024年01月22日

简介

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

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

文章来源:https://blog.csdn.net/weixin_43325228/article/details/135750862
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。