Pygame程序运行缓慢。为什么?

时间:2016-01-08 18:43:04

标签: python pygame

我正在制作一个关于pygame的Tamagotchi项目,在这个早期阶段,程序运行速度非常慢。你有什么提示吗? 还有,有什么方法可以加快它的速度吗?

到目前为止,这是我的代码:

Shared Sub releaseObject(ByVal obj As Object)
    Try
        System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
        obj = Nothing
    Catch ex As Exception
        obj = Nothing
    End Try
End Sub

2 个答案:

答案 0 :(得分:0)

您可以尝试分析代码:

https://docs.python.org/2/library/profile.html

大多数情况下,我认为这是因为你有许多嵌套for循环。其中一些似乎没必要。嵌套for循环在Python中并不快。

你的宽度和高度是恒定的,你不需要在每个刻度线上创建一个全新的空网格。

import copy

empty_grid = [[0] * width for _ in range(height)]
def make_empty_grid():
    return copy.deepcopy(empty_grid)

不是将项目复制到网格中,而是绘制网格,为什么不直接调用draw_item调用pygame.draw?因为它是在整个网格上迭代两次 - 一旦将项目放入网格中,一旦绘制网格。

编辑:这可能是一个糟糕的建议,我看到即使是值为0的网格元素也会绘制出与背景不同的颜色。我不确定你在做什么。

答案 1 :(得分:0)

每次都不需要重新计算空网格。将它作为“背景图像”存储在表面中,然后每次只需blit它到屏幕上,而不是清除它,重新计算它,然后将它blitting。此外,绘制项目时只绘制项目而不是整个屏幕。您可以使用display.update并传递旧的和新的项目,因为它们是唯一正在改变的事物。

您还应该将项目存储为曲面或精灵,而不是每次都通过循环重新计算它们。