为什么我的基本PyGame模块如此之慢?

时间:2011-05-27 18:48:22

标签: python pygame

我计划在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 个答案:

答案 0 :(得分:3)

pyGame基于SDL,内部基于线程。

当你有线程时,打印消息基本上是禁止的。因为调度程序切片(SDL中很大)经常会因打印消息而延迟。它不是pygame很慢(在某些情况下,但不是在这个中),它只是print语句在一个单独的事件线程中。

尝试在pygame中执行this,它会运行得很好。