设置实例化对象并将其分配给数组的更快方法

2024-09-26 22:55:12 发布

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

我目前正在使用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模块的限制,那就更奇怪了

编辑: 我还注意到,当它在循环中迭代时,速度越慢!怎么会这样


Tags: 模块inpyselfforrange速度max
1条回答
网友
1楼 · 发布于 2024-09-26 22:55:12

如果使用python2.x,请使用xrange而不是range

xrangerange更高效、更快

原因: 执行range(1,100000)操作时,它将返回在内存中创建的100000元素数组,其中as xrange(1,100000)将在运行时使用提供给函数的当前值和步长值生成数字

相关问题 更多 >

    热门问题