我已经实现了一个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
有人可以帮助我吗?
非常感谢!答案 0 :(得分:0)
关于Python与Matlab的性能,我建议看一下 http://wiki.scipy.org/PerformancePython。显然速度与需要解决的问题有关,但我想象纯粹的数学/物理计算和模拟Matlab将占上风(当然,是为这些目的而设计的)。
关于你的代码,Python确实有各种各样的工具可用来提高性能,例如使用生成器,或者,对于数学应用程序,Numpy(用C语言提供)ndarrays。如果你认真对待高性能python,你可能还想看看PyPy或Cython。
我还记得在某处(如果找到链接会更新)只是通过使用函数调用和python类,代码执行速度大大加快,因为字节码可以更有效地解释。
我还会指出您的回复https://stackoverflow.com/a/16752469/9889462作为使用生成器加速代码的启动器。希望这有帮助