L'utilisation de pygame sur Ubuntu 16.04 entraîne une utilisation du processeur à 100%.
main.py
import time
import pygame
pygame.init()
while True:
time.sleep(1)
C'est un code qui ne fait rien, mais si vous le cochez en haut
top
top - 13:18:43 up 6:21, 1 user, load average: 0.78, 0.56, 0.48
Tasks: 329 total, 1 running, 328 sleeping, 0 stopped, 0 zombie
%Cpu(s): 26.0 us, 4.8 sy, 0.6 ni, 68.2 id, 0.4 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 12222916 total, 5867808 free, 3502168 used, 2852940 buff/cache
KiB Swap: 12502012 total, 12502012 free, 0 used. 7608068 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18635 USER 20 0 704956 31568 18668 S 93.8 0.3 0:41.60 python2.7
1800 USER 20 0 1251136 113176 64712 S 6.2 0.9 6:27.81 compiz
1 root 20 0 119960 6064 3932 S 0.0 0.0 0:03.00 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.21 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
7 root 20 0 0 0 0 S 0.0 0.0 0:09.43 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root rt 0 0 0 0 S 0.0 0.0 0:00.09 migration/0
10 root rt 0 0 0 0 S 0.0 0.0 0:00.04 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.04 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:00.07 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:00.20 ksoftirqd/1
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:+
16 root rt 0 0 0 0 S 0.0 0.0 0:00.04 watchdog/2
17 root rt 0 0 0 0 S 0.0 0.0 0:00.08 migration/2
18 root 20 0 0 0 0 S 0.0 0.0 0:00.24 ksoftirqd/2
Vous pouvez voir que Python occupe le processeur pendant un temps terrible.
L'environnement est le suivant. CPU:Core i3 4005u Memory:12G OS:Ubuntu 16.04(LTS)
Apparemment, pygame.init () fait quelque chose de mal. D'après la documentation pygame, pygame.init () semble être une fonction qui initialise plusieurs modules à la fois. Seul le module spécifié par pygame. [Nom du module] .init () peut être initialisé. Ainsi, lorsque j'ai initialisé les modules individuellement, l'utilisation du processeur était de 100% immédiatement après l'appel de pygame.base.init (). Est-ce la cause?
Au lieu d'écrire pygame.init (), s'il y a un module qui doit être initialisé, il sera initialisé avec pygame. [Nom du module] .init (). Heureusement, pygame.base ne semble pas causer d'erreur sans initialisation, donc je l'ai résolu pour le moment.
Recommended Posts