【发布时间】:2020-11-07 18:58:48
【问题描述】:
编辑
这是一个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 最新版本中可能存在的错误吗?还是我的时间管理不正确?
【问题讨论】:
-
您是否使用简单的 while 循环运行了一些测试?在没有 pygame 显示的情况下,我得到了完全相同的结果,而且,我没有 quantic 计算机,基准很差。
-
我确实意识到根本问题出在时钟上,所以你是对的,屏幕真的无关紧要。我在 i7 上运行它,功能足够强大,我可以以 60+ fps 的速度渲染完整的游戏画布,而 CPU 使用率根本不会发生变化;一个核心固定在 1fps 或 99fps。
-
您的示例程序在我的电脑上运行良好。最近有人在这里发布了关于一个简单的 Pong 游戏的性能问题,这对我来说也很好用。也许这确实是 pygame 中的一个错误,您应该尝试联系开发人员。
-
@skrx,你能确认你正在运行的pygame版本吗?我只有found this,这似乎也相关。
-
在 pygame 1.9.3 和旧 1.9.2(64 位版本)、Python 3.5 和 3.6、Windows 7 中都能正常工作。