Comment interrompre l'exécution d'un processus de longue durée dans la console python d'ArcMap?
Par exemple, comment interrompez-vous une longue itération comme celle ci-dessous une fois qu'elle est lancée?
for i in range(1, 50):
# some long process which takes over a minute to complete
Je veux arrêter le processus à tout moment en appuyant sur une combinaison de touches, en cliquant sur un bouton ou quelque chose de similaire pendant que le code que j'ai entré dans la fenêtre de la console est en cours d'exécution .
arcpy
arcmap
python-window
Alex Essilfie
la source
la source
Réponses:
Je viens de le tester et ESC ça ne marche pas non plus. ArcGIS se fige juste un instant, puis continue. Il ne semble pas y avoir de moyen de forcer sa fermeture une fois qu'il s'exécute dans la console ArcGIS Python. Vous ne pouvez pas non plus le tuer à l'aide du Gestionnaire des tâches car le processus Python n'apparaît pas là-bas.
Si vous voulez vraiment pouvoir le forcer à le quitter, vous pouvez envisager d'utiliser un IDE comme IDLE plutôt que de le faire dans la console ArcGIS Python. Dans IDLE par exemple, vous pouvez utiliser Ctrl+ Zou Ctrl+ Cpour terminer l'exécution.
la source
Voici la méthode que j'utilise:
exemple d'un fichier kill_processx.py:
la source
C'est une mauvaise pratique de forcer l'arrêt à l'aide de tactiques de force brute. Au lieu de cela, comme l'a souligné @Aragon, vous devez ajouter la gestion des erreurs à votre script pour isoler les composants et / ou arrêter le script si certaines conditions ne sont pas remplies. Comme le souligne @RK, la console ArcGIS python est pratiquement sans valeur pour l'exécution de scripts complexes et, en pratique, devrait être réservée à des opérations simples - restez avec IDLE , pythonwin , pyscripter ou n'importe quel hôte d'autres IDE. Voici les discussions liées à votre question:
Comment utiliser sys.exit (0) dans un script arcpy pour quitter tôt sans qu'un message d'erreur ne s'affiche?
Mettre fin à un script Python
Comment arrêter une commande ou une invite en Python?
la source
Je travaille dans 10.4 et j'ai découvert que je pouvais cliquer sur le X fermé pendant l'exécution d'un script. ArcMap me demandera si je souhaite annuler une opération.
Je clique sur Oui. ArcMap me demande ensuite si je souhaite enregistrer avant de quitter. Je clique sur Annuler. Le script déclenche une interruption du clavier.
la source
si vous voulez résoudre de manière pythonique, essayez ceci:
Ou utiliser:
en détail:
J'espère que ça t'aide...
la source
sys.exit()
mais cela ne fonctionne pas lorsqu'une boucle ou un processus similaire est en cours d'exécution.Au moins dans ArcMap 10.4, vous pouvez le faire. Assurez-vous que la fenêtre "Résultats" est visible. (Sinon, trouvez-le sous "Géotraitement"). Maintenant, si vous avez une commande en cours d'exécution, elle apparaîtra dans cette fenêtre. Faites un clic droit dessus et appuyez sur "Annuler".
la source
Que faire si sous chaque ligne de code vous ajoutez un
if
qui vérifieif input()=="what ever you want in here"
qui utilisesys.exit
.Par exemple: https://repl.it/@kquazi_tcsp/JumpyNaturalMetadata
la source
En utilisant IDLE, j'ai un fichier appelé "stop.py" qui contient la seule ligne: "pass". Gardez ce fichier ouvert dans IDLE pendant qu'un autre script .py est en cours d'exécution. Cliquer sur F5 dans la fenêtre "stop.py" réinitialise IDLE.
la source