python processus prend 100% du CPU
Je suis en train de lancer python application et d'exécuter des actions en fonction sur l'intervalle spécifié. Code ci-dessous est de consommer en permanence 100% de CPU.
def action_print():
print "hello there"
interval = 5
next_run = 0
while True:
while next_run > time.time():
pass
next_run = time.time() + interval
action_print()
Je voudrais éviter de mettre du processus pour dormir car il n'y aura plus d'actions à exécuter à différents intervalles.
veuillez informer
Si vous ne voulez pas dormir d'une façon ou d'une autre, vous allez brûler de l'UC.
Pourriez-vous élaborer sur "il n'y aura plus d'actions à exécuter à intervalles réguliers"?
comment puis-je m'assurer que tout est exécuté sur le temps, même si le processus est endormi? J'ai essayé d'utiliser le sommeil cependant tout ce qui est moins d'une seconde mange de la cpu.
Voulez-vous que ce processus prenne 100% de cpu?
je veux dire plus d'actions sont à venir pas plus qu'à l'imprimer. tout le problème est dans les intervalles qui sont des flotteurs c'est à dire 3,5 s, 4.73 s etc.
Pourriez-vous élaborer sur "il n'y aura plus d'actions à exécuter à intervalles réguliers"?
comment puis-je m'assurer que tout est exécuté sur le temps, même si le processus est endormi? J'ai essayé d'utiliser le sommeil cependant tout ce qui est moins d'une seconde mange de la cpu.
Voulez-vous que ce processus prenne 100% de cpu?
je veux dire plus d'actions sont à venir pas plus qu'à l'imprimer. tout le problème est dans les intervalles qui sont des flotteurs c'est à dire 3,5 s, 4.73 s etc.
OriginalL'auteur m1k3y3 | 2012-02-19
Vous devez vous connecter pour publier un commentaire.
Si vous savez quand la prochaine course sera, vous pouvez simplement utiliser
temps.le sommeil
:Si vous voulez d'autres threads pour être en mesure de vous interrompre, utiliser un l'événement comme ceci:
Un autre thread peut maintenant appeler
interruptEvent.set()
pour réveiller le vôtre.Dans de nombreux cas, vous souhaitez également utiliser un Verrouillage pour éviter des conditions de course sur les données partagées. Assurez-vous de désactiver l'événement pendant que vous maintenez le verrou.
Vous devriez aussi être conscient que, en vertu de disponible, un seul thread peut exécuter du code Python. Par conséquent, si votre programme est lié au PROCESSEUR sur plusieurs threads et vous êtes à l'aide de disponible ou pypy, il convient de substituer
threading
avecmultitraitement
.OriginalL'auteur phihag
Je présume que vous ne souhaitez pas écrire de temps.sommeil(intervalle) , mais en remplaçant 'pass' avec le temps.sleep(0.1) sera presque entièrement libre de votre PROCESSEUR et vous permettre de la souplesse dans le temps prédicat.
Vous pouvez également utiliser un thread pour chaque événement que vous êtes en train de planifier et de temps d'utilisation.sommeil(intervalle), mais ce sera toujours la cravate de votre CPU.
Bas de ligne : votre boucle WHILE : PASS va rond et rond très rapide de consommer tout votre CPU.
OriginalL'auteur user1202733