为什么我的基本PyGame模块这么慢?

3 投票
1 回答
2320 浏览
提问于 2025-04-16 18:28

我打算用Pygame写一些代码,刚开始学习基础知识时发现代码运行得很慢。当我按下一个键时,终端里显示出来的内容要等一会儿才会出现(这个情况似乎没有规律可言)。

我在用Python 2.6,遇到这个问题后我降级了版本。经过进一步测试,我发现整个系统都变慢了。有没有人遇到过这个问题,或者有什么解决办法可以让运行速度更快,或者防止系统变慢?

操作系统 - Ubuntu
硬件 - Macbook Pro

import pygame
import pygame.locals
pygame.mixer.init()

screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("bla")

background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill(pygame.Color("green"))
screen.blit(background, (0, 0))

looping = True
while looping:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            looping = False
        elif event.type == pygame.KEYDOWN:
            keyName = pygame.key.name(event.key)
            print "key pressed:", keyName

            if event.key == pygame.K_SPACE:
                print "Loading Music"
                pygame.mixer.music.load("born.mp3")

            elif event.key == pygame.K_ESCAPE:
                looping = False

    pygame.display.flip()

如果需要我提供更多信息,我很乐意帮忙。

1 个回答

3

pyGame是基于SDL的,而SDL内部又是基于线程的。

当你使用线程的时候,打印信息基本上是不太靠谱的。因为在调度程序处理任务时(在SDL中,这个处理时间比较长),打印的信息可能会被延迟。并不是说pyGame本身慢(在某些情况下确实会慢,但这不是问题所在),而是打印语句是在一个单独的事件线程中执行的。

试试在pyGame中做这个,效果会很好。

撰写回答