python的速度问题



我正在努力加快我的python代码。我认为我的代码的主要瓶颈位于下面的函数,其中k是一个计数器,m是一个空矩阵,image3是一个包含0和1的矩阵。你有什么建议吗?p.s.我已经尝试使用Cython没有太大的成功,所以我想知道是否有一些更简单的方法来解决这个问题。提前感谢您的帮助。

def make_step(k,m,image3):

for i in range(len(m)):

for j in range(len(m[i])):
if m[i][j] == k:

if i>0 and m[i-1][j] == 0 and image3[i-1][j] == 0:   
m[i-1][j] = k + 1  


if j>0 and m[i][j-1] == 0 and image3[i][j-1] == 0:
m[i][j-1] = k + 1  


if i<len(m)-1 and m[i+1][j] == 0 and image3[i+1][j] == 0:
m[i+1][j] = k + 1   


if j<len(m[i])-1 and m[i][j+1] == 0 and image3[i][j+1] == 0:
m[i][j+1] = k + 1   

我同意Booboo的观点,你的代码需要检查,我建议以下方法:

做一个好的基准测试,看看时间花在哪里了。对于这类问题,perf_tool是一个有效的工具,专为这个[*]。在您知道代码缺少的地方之后,您可以使用掩码方法在矢量中重写内部循环。这使您可以将问题从O(n*m)减少到O(n)

[*]我是perf_tool的主要开发者

最新更新