加速/矢量化Python中的嵌套循环

2024-04-26 23:42:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经实现了一个Python脚本,需要使用4个嵌套循环。我意识到这使得解决问题的速度非常慢。我还注意到,类似的循环在Matlab中比在Python中快得多。你知道吗

1)为什么Matlab中的相同循环比Python中的快?你知道吗

2)如何改进Python代码(例如矢量化)?我试过itertools的函数(组合、乘积),但它们并不能加快计算速度。你知道吗

我创建了一类点-每个点都有坐标和速度,我计算它们之间的距离和其他量

N = 1000
for i in range(0,N-1):
    for i2 in range(0,10):
        if p[i].id[i2] == 1:    # check if point is active
            ri = p[i].r[i2]
            vi = p[i].v
        else:
            pass

        for j in range(i+1,N):
            for j2 in range(0,10):
                if p[j].id[j2] == 1:
                    rj = p[j].r[j2]
                    vj = p[j].v
                else:
                    pass

#            and the rest of my function

有人能帮我吗?你知道吗

非常感谢!你知道吗


Tags: in脚本idforifrangepasselse
1条回答
网友
1楼 · 发布于 2024-04-26 23:42:19

关于Python与Matlab的性能,我建议 http://wiki.scipy.org/PerformancePython。显然,速度与需要解决的问题有关,但我认为对于纯粹的数学/物理计算和仿真,Matlab将占上风(当然,是为这些目的而设计的)。你知道吗

对于您的代码,Python确实提供了各种工具来提高性能,例如使用生成器,或者对于数学应用程序,使用Numpy的(C中的backended)ndarray。如果您对高性能python是认真的,您可能还想看看PyPy或Cython。你知道吗

我还记得在某个地方读到(如果找到链接就会更新)仅仅通过使用函数调用和python类,代码执行速度就大大加快,因为字节码可以更有效地解释。你知道吗

我还将向您指出这个回复的方向https://stackoverflow.com/a/16752469/9889462,作为使用生成器加速代码的启动程序。希望这有帮助

相关问题 更多 >