PygameでFPSを設定してもCPU使用率が跳ね上がる場合の対処方法

以下の環境でPygameを利用しています。

(pygame) [koji:~]$ python --version
Python 3.6.4
(pygame) [koji:~]$ pip freeze
pygame==1.9.3
(pygame) [koji:~]$

これで、以下のようなシンプルなカウントアップをウインドウ内に表示するコードを実行すると、CPU使用率が想定以上に高くなります。(Corei7で全体のCPU使用率が30%ほどにまで上がりました)

import sys
import pygame
from pygame.locals import QUIT

pygame.init()
surface = pygame.display.set_mode((400, 300))
fps_clock = pygame.time.Clock()
def main():
    sysfont = pygame.font.SysFont(None, 36)
    counter = 0
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()

        counter += 1
        surface.fill((0, 0, 0))
        count_image = sysfont.render(
               'Count is {}'.format(counter), True, (255, 255, 255))
        surface.blit(count_image, (50, 50))
        pygame.display.update()
        fps_clock.tick(32)
if __name__ == '__main__':
    main()

どうやらPygameのサウンド周りに問題があるらしく、それが原因でCPU使用率が跳ね上がってしまっているようです。 そこで、pygame.initのあとにpygame.mixer.quit()を追加して、とりあえずサウンド周りを無効化することでCPU使用率が跳ね上がる問題は回避できるようです。

pygame.init()
pygame.mixer.quit() # これを追記

詳細はGithubのHigh CPU usage in pygame #331

公開日:2018/05/08

Pygame Python

About me

ドイツの現地企業でWeb Developer/System Administratorとして働いているアラフォーおじさんです。

プログラミングとかコンピュータに関する事がメインですが、日常的なメモとか雑多なことも書きます。

Links :
目次