Использование pyGame для полного ядра в простой петле

Изменить

Это открытый выпуск, и, похоже, он связан с alsa audio.

Обходной путь - отключить звуковой микшер или установить pyGame из исходного кода.

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

Я только начинаю разработку с pyGame и обнаружил, что должен использовать следующее для ограничения процессорного времени:

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

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

Мне кажется, что проблема в том, что самая простая программа для рисования квадрата, работающая на скорости 1 FPS, потребляет полное ядро процессора.

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: [email protected]
License: LGPL
Location: /home/mclark/.local/lib/python2.7/site-packages
Requires: 

Это возможная ошибка в последней версии pyGame? Или я неправильно управляю временем?

Ответы