Quick answer: Pygame consuming 100% CPU when minimized? Event polling doesn't yield on minimize - use blocking event.wait while minimized.

Game minimized; CPU spikes; laptop fan spins.

Use event.wait

while minimized:
    event = pygame.event.wait()

Blocks until OS event. CPU drops to zero.

Or sleep

time.sleep(0.1) per iter. Crude; works.

Detect visibility

WINDOWFOCUSGAINED / WINDOWFOCUSLOST events. Toggle the loop mode.

“Minimized = idle. Idle loops should sleep.”

If your game runs unminimized for hours on player laptops, the idle CPU is a battery drain. Address it.

Related reading