Pygame 占用cpu有点大的解决方法

很正常的一个pygame界面,自己写了几个按钮和事件优先级排序

但是仅仅是这样占用就有

12.7%,对于你们可能很小,但是对于一个简单的2d图形程序很大

而且pygame非全屏无法使用GPU加速,全靠cpu一己之力

通过减少重绘程度来降低CPU负担

我的按钮重绘时每一帧都在进行这些运算

重绘surface,透明度转换

所以,可以通过减少重绘来降低cpu负担

如可以将在重绘时大部分不需要变动的地方放在一个surface中,重绘时直接将字体贴上该surface即可

降低帧数,需要时才刷新

这个类似于各大手机厂的自适应刷新率,比如苹果ProMotion

逻辑其实也差不多,可以将需要刷新的组件图形放在一个draw函数中,pygame循环中等到有事件产生再进行刷新

但是这个方案对于一些需要实时刷新的游戏并不能产生多大用处,甚至没有用处

draw函数
循环更新函数中的刷新判断(x = pygame.event.get())

当有刷新请求时就会将全局变量的 RefreshRequest 设置为 True,此时就会进行一次更新

或者当pygame中有事件产生,就会进行一次刷新(比如鼠标的移动,点击)

One comment:

发表回复