我在python中有for循环,它迭代了将近250万次,要得到一个结果需要很长时间。在JS中,我可以在1秒钟内完成这个任务,但是Python在我的计算机上只需要6秒钟。在这种情况下,我必须使用Python。代码如下:
for i in xrange(k,p,2):
arx = process[i]
ary = process[i+1]
for j in xrange(7,-1,-1):
nx = arx + dirf[j]
ny = ary + dirg[j]
ind = ny*w+nx
if data[ind] == e[j]:
process[c]=nx
c=c+1
process[c]=ny
c=c+1
matrix[ind]=1
以下是代码中的一些列表:
process = [None] * (11000*4)
赋值后,它的项将被整数替换。在
数据列表由rgba图像像素的“r”信息组成。
data = imgobj.getdata(0)
我该怎么做。我做错什么了?关于for循环还有其他方法吗?谢谢。在
以下是一些改进代码的建议:
内部的xrange经常被使用:如果你把它列为一个常规的列表,然后做这样的事情:
证据:
^{pr2}$如果我写的内部代码的速度和我写的不一样的话。 [编辑]引用局部变量比访问全局变量快。 因此,如果这是正确的,请将列表定义放在尽可能靠近循环的地方,而不是每次都生成它。在
你也改变了两次程序。如果不需要,就选一个。在
正如你在评论中提到的,你说你在处理图像。我不确定下面的内容是否相关,但也许您可以使用openCV,它有一个pythonapi到C代码。这可能会加快速度。正如其他人所提到的:numpy和你自己的cython扩展将大大加快这一进程。在
相关问题 更多 >
编程相关推荐