首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多处理以加速python中的执行时间

多处理以加速python中的执行时间
EN

Stack Overflow用户
提问于 2019-05-15 08:04:54
回答 1查看 70关注 0票数 5

我有4个python列表,它由2个项目的内部列表组成:

代码语言:javascript
运行
复制
a = [[1,2], [3,4], ...]
b = [[5,2], [2,4], ...]
c = [[7,2], [5,4], ...]
d = [[8,2], [4,4], ...]

我可以像这样连续地对内部列表求和:

代码语言:javascript
运行
复制
for list in [a,b,c,d]:
    total = 0
    for [x,y] in list:
        total += x + y
    print("total is: ", total)

假设每个列表的每次求和操作都需要5秒,因此连续对4个列表求和将需要20秒。

如果我使用multiprocessing,我是否可以同时对4个列表求和,并且所有4个求和操作只需要5秒而不是20秒?

EN

回答 1

Stack Overflow用户

发布于 2019-05-15 08:53:28

是的,对于纯CPU工作,它将以线性方式加速。快速示例:

代码语言:javascript
运行
复制
from multiprocessing import Pool
import time


def calc_total(*_):
    sum(range(100_000_000))


start_time_1 = time.time()
for _ in range(4):
    calc_total()
print(time.time() - start_time_1)

with Pool(processes=4) as p:
    start_time_2 = time.time()
    p.map(calc_total, range(4))
    print(time.time() - start_time_2)

单线程: 4.127秒

多线程: 0.960秒

但是,您在示例中遇到的问题是管理内存中的数组以共享或创建每个线程,否则会有大量开销在进程之间移动数组,从而降低速度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56140143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档