我目前正在使用graphics.py模块开发生活游戏的一个版本。我是编程新手,所以请容忍我
目前,我使用的嵌套for循环可以相当快地生成较小的网格,但在50x50及以上的范围内,生成速度明显较慢:
for i in range(self.scale, Interface.worldsize_max+2, self.scale):
for u in range(self.scale, Interface.worldsize_max+2,self.scale):
self.point1 = graphics.Point(i,u)
self.point2 = graphics.Point(i-self.scale, u-self.scale)
self.square = graphics.Rectangle(self.point1, self.point2)
self.square.draw(self.window)
self.square.setFill('black')
self.grid[round(i/(Interface.worldsize_max/self.worldsize))-1][round(u/(Interface.worldsize_max/self.worldsize))-1]=self.square
worldsize_max是运行程序的窗口宽度/高度的最大像素。比例是worldsize\u max除以列/行的数量。到目前为止,除了a)在单独的模块中预生成这些数组并导入它们(我只会有预设的大小选项,不管是小的、中等的等等)或者b)使用多处理方式来强制执行之外,我想不出其他方法来加快速度。有这么大的数组并不是绝对必要的,但如果这是我的代码的限制,或者可能是graphics.py模块的限制,那就更奇怪了
编辑: 我还注意到,当它在循环中迭代时,速度越慢!怎么会这样
如果使用
python2.x
,请使用xrange
而不是range
xrange
比range
更高效、更快原因: 执行
range(1,100000)
操作时,它将返回在内存中创建的100000
元素数组,其中asxrange(1,100000)
将在运行时使用提供给函数的当前值和步长值生成数字相关问题 更多 >
编程相关推荐