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

标签 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()

如果我可以提供任何进一步的信息,我很乐意提供帮助。

最佳答案

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

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

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

关于python - 为什么我的基本 PyGame 模块这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6156485/

相关文章:

Python:为什么我的基于生成器的范围比 xrange 慢 X2?

python - 如何在没有 csv 索引 header 的情况下编写行?

python - 为什么 event.type 函数返回名称错误?

python - 如何在 PyGame 中集成折线图查看器?

python - 生命游戏 - 覆盖当前一代而不是更新到下一代

python - pyunit 测试失败,因为方法在传入 5 个参数时只接受 4 个参数

python - 将评分函数从 sklearn.metrics 传递到 GridSearchCV

Python 解析 sys.argv 中的 $

python - pickle 不可 pickle 的对象

python - 如何将光照应用于 pyopengl 上的 .obj 文件