Quand je fais quelque chose comme
while True:
print('loop')
et exécuter ce code en sublime je ne suis pas capable de l'arrêter. Je dois tuer manuellement le processus et redémarrer sublime.
Existe-t-il un moyen de définir une sorte de 'max_execution_time'
ou toute autre solution de contournement permettant d'arrêter cela correctement?
Vous voulez utiliser Ctrl+Break. Pour votre propre information, allez simplement vérifier sous Outils dans Sublime Text et vous verrez Annuler la construction et le raccourci clavier ci-dessus. Cela fonctionnera parfaitement pour des boucles infinies. Autant dire que j'ai eu la même chose arriver! ;)
Pour les utilisateurs Windows, il n'y a pas Break clé, alors allez dans Préférences> Liaisons de touches et changez la ligne
{ "keys": ["ctrl+break"], "command": "cancel_build" }
à un autre raccourci, tel que Ctrl+Alt+B
Vous avez quelques options ici . Vous pouvez définir un très grand nombre d'itérations (je le fais en fait avec la plupart des boucles while jusqu'à ce que mon code soit complètement débogué, afin d'éviter des problèmes de boucle infinis):. Exemple
max_iterations = 100000000
while i < max_iterations:
print("Hello World")
Une alternative serait d'utiliser le module time pour chronométrer le temps d'exécution de votre code comme ceci
import time
max_execution_time = 10000000 #this will be in seconds
start_time = time.clock()
elapsed_time = 0
while elapsed_time < max_execution_time:
elapsed_time = time.clock() = start_time
#Your loop code here
Pour MacOS:
cmd + option + esc
forcer à quitter
La combinaison est ctrl+break
.
Sous Windows, il n'y a pas de bouton de pause, vous pouvez donc aller à Preferences > Key Bindings
et ajouter du côté utilisateur
{ "keys" : ["ctrl+c"], "command": "cancel_build"}
Maintenant, en appuyant sur Ctrl + C, l'exécution s'arrête. Bien sûr, vous pouvez changer la combinaison en ce que vous voulez.