Python pyGame在简单循环中的完整核心使用

Python pyGame在简单循环中的完整核心使用,python,pygame,Python,Pygame,编辑 这是一个音频,似乎与alsa音频有关 解决方法是关闭音频混音器,或从源代码安装pyGame pygame.init() pygame.mixer.quit() 我刚刚开始pyGame的开发,我发现我应该使用以下方法来控制CPU时间: fps = 30 clock = pygame.time.Clock() while True: # Logic... clock.tick(fps) 我似乎遇到的问题是,运行速度为1fps的最基本的绘制正方形程序会消耗一个完整的CPU

编辑

这是一个音频,似乎与alsa音频有关

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

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

我刚刚开始pyGame的开发,我发现我应该使用以下方法来控制CPU时间:

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

while True:
    # Logic...
    clock.tick(fps)
我似乎遇到的问题是,运行速度为1fps的最基本的绘制正方形程序会消耗一个完整的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%,尽管消息仅以预期的1fps更新率打印到控制台

$ 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最新版本中可能存在的错误吗?还是我的时间管理不正确?

我们在pygame 2中解决了这个问题。在某些linux系统上,它不再需要100%的CPU核心

python3-mpip安装pygame——升级

从PyGame2.0.0开始,最好在一些linux系统上从源代码安装pygame


干杯,

您是否使用简单的while循环运行了一些测试?我在没有pygame显示器的情况下得到了相同的结果,而且,我没有quantic计算机,基准测试非常差。我确实意识到根本问题在于时钟,所以你是对的,屏幕真的不重要。我在i7上运行它,有足够的能量,我可以以60+fps的速度渲染完整的游戏画布,而不需要改变CPU使用率;一个内核的速度是1fps,或者说99fps。你的示例程序在我的电脑上运行得很好。最近有人在这里发布了一个简单的乒乓球游戏的性能问题,这个游戏对我来说也很好。也许这确实是pygame中的一个bug,您应该尝试与开发人员联系。@skrx,您能确认您正在运行的pygame版本吗?我有一个似乎也是相关的。在pygame 1.9.3和旧的1.9.2(64位版本)、Python 3.5和3.6、Windows 7中都能正常工作。这就是我所说的好时机。我正在调查这个问题,在你发布后不到10个小时就找到了你的答案。当我安装pygame2时,您可以确认它能按预期工作。不幸的是,pygame2不能再播放mp3了。@fuenfundachtzig您有关于这个问题的链接吗?我们有测试证明它确实有效。此外,它还使用了一个新的mp3库,实际上可以正常工作,而PyGame1使用smpeg,它不适用于大多数mp3文件。我所做的是升级到
pygame==2.0.0.dev6
,并从示例中运行
music\u drop\u fade.py
,使用一个在1.9.6中可以正常播放的mp3,然后得到
无法识别的音频格式。(对于“播放良好”的定义,在现代CPU上播放mp3的100%CPU负载是可以接受的。)我在
pygame==2.0.0.dev6