当前位置: 首页 > 知识库问答 >
问题:

如何并行化两个嵌套的for循环?

鄂慈
2023-03-14

我想在Python2.7中并行化两个嵌套的for循环,但我自己没有成功。我不知道如何接近什么是并行化的定义。

总之,这里是单处理器代码:

import time

i = [int(x) for x in range(10000)]
j = [int(x) for x in range(10000, 20000)]

print len(i)
print len(j)

def sum(niz1,niz2):
    suma=[]
    for i in range(len(niz1)):
    suma1=0
        for j in range(len(niz2)):
            suma1=suma1+niz1[i]*niz2[j]
        suma.append(suma1)
    return suma

start_t0=time.time()
suma=sum(i, j)
print len(suma)

print ("Time:  %s seconds " % (time.time() - start_t0))

共有1个答案

松涵容
2023-03-14

几个想法:

>

  • 我希望你的真实计算比你贴出来的更复杂。如果不是,只需计算一次niz2的和,然后将niz1的每个元素乘以这个和,得到结果向量。

    (假设真实的用例更复杂。)Python对于CPU限制的计算速度不快。当计算大量数字时,您应该改用numpy这样的库。Numpy的操作是用C实现的,因此比常规的python实现要快得多。

    这有帮助吗?

  •  类似资料:
    • 我想在一个并行外部循环中运行一个包含for循环(应该并行运行)的函数。因此看起来如下所示: 给定上面的代码,我希望在函数中为循环创建5个并行线程,并且希望这5个线程中的每个线程创建另一个线程来运行自己的并行for循环。

    • 问题内容: 我已经使用Java已有一段时间了,但是我对循环的教育还是有点不足。我知道如何创建存在于Java中的每个循环以及如何打破循环。但是,最近我想到了: 假设我有两个嵌套循环。我可以只使用一条语句来打破两个循环吗? 这是我到目前为止所拥有的。 有没有办法做到这一点? 问题答案: 在Java中,您可以使用标签来指定要中断/继续的循环:

    • 这个问题是为了修改过去的试卷,如果我走上了正确的道路,我需要一些建议。 求出下面一段代码的时间复杂度,表示给定整数n的操作次数: 所以我认为外循环是,第一个内环是,第二个内环是。我只是想知道我是否有一个大致的想法,以及如何从这里继续前进。

    • 我想优化下面的代码。streams会优化下面嵌套的foreach循环吗?如果是这样的话,我是streams的新手,有人能帮我吗?出于项目保密的目的,我在下文中替换了这些名称。应使用tList进行代码中的进一步处理。有人能帮忙吗?

    • 我正在做一些研究,并且是一个使用CUDA的初学者。我使用的语言是C和C++,与NVIDIA的CUDA兼容的基本语言。在过去的一周里,我一直试图通过将CUDA与C++代码集成来获得任何加速。 此外,CUDA的实现也比正常的非CUDA版本慢。 下面是我调用内核函数的函数。本质上,我将原来在这个函数中的计算移到了核函数中,以便将它并行化。//计算输入之间的距离void computeInput(int

    • 和其他编程语言一样, Java 允许循环嵌套。如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环。 嵌套循环既可以是 for循环嵌套 while 循环,也可以是 while 循环嵌套 do-while 循环 …… 即各种类型的循环都可以作为外层循环,也可以作为内层循环。 当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行——只是