pyGame简单循环中的完整核心用法

时间:2017-09-11 17:09:43

标签: python pygame

修改

这是open issue,似乎与alsa音频有关。

解决方法是关闭音频混音器,或从源安装pyGame。

pygame.init()
pygame.mixer.quit()

我刚开始使用pyGame进行开发,并发现我应该使用以下内容来控制CPU时间:

fps = 30
clock = pygame.time.Clock()

while True:
    # Logic...
    clock.tick(fps)

我似乎遇到的问题是,以1 FPS运行的方形程序最基本的绘制会消耗完整的CPU内核。

import pygame

pygame.init()

size = ( 16, 16 )
screen = pygame.display.set_mode(size)
pygame.display.set_caption("High CPU")

clock = pygame.time.Clock()

run=True
while run:

    print("Rendering...")

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
             run=False

    screen.fill((255,255,255))

    # Render
    pygame.display.flip()
    clock.tick(1)

# When done
pygame.quit()

一旦我调用此脚本,我的计算机的一个核心就会达到100%,尽管这些消息只是以预期的1 FPS更新速率打印到控制台。

$ ps aux | grep python
mclark   25867 97.4  0.1 652232 29088 pts/0    Sl+  13:10   0:06 python highCPU.py

并运行最新的pyGame

$ pip show pygame
Name: pygame
Version: 1.9.3
Summary: Python Game Development
Home-page: http://www.pygame.org
Author: Pete Shinners, Rene Dudfield, Marcus von Appen, Bob Pendleton, others...
Author-email: pygame@seul.org
License: LGPL
Location: /home/mclark/.local/lib/python2.7/site-packages
Requires: 

这是pyGame最新版本中的可能错误吗?还是我错误地管理时间?

1 个答案:

答案 0 :(得分:3)

我们在pygame 2中解决了这个问题。

pip install pygame==2.0.0.dev6

欢呼