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