为什么我的基本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 个回答
3
pyGame是基于SDL的,而SDL内部又是基于线程的。
当你使用线程的时候,打印信息基本上是不太靠谱的。因为在调度程序处理任务时(在SDL中,这个处理时间比较长),打印的信息可能会被延迟。并不是说pyGame本身慢(在某些情况下确实会慢,但这不是问题所在),而是打印语句是在一个单独的事件线程中执行的。
试试在pyGame中做这个,效果会很好。