10
votes

Comment arrêter l'exécution du programme Python en ralenti

J'ai un script python qui utilise plt.show () comme c'est la dernière instruction. Quand il s'exécute, Idle est juste bloqué après la dernière instruction. Je reçois l'image mais je n'obtiens pas le rappel.

sur d'autres scripts, j'utilise généralement Ctrl-C pour casser le programme (parfois ne fonctionne pas immédiatement) mais comment puis-je récupérer l'invite avec le plt.show () < / code>? Ctrl-C ne fonctionne pas ...

Y a-t-il d'autres moyens d'arrêter le programme?

Ceci est inactif sur Windows, si cela fait toute différence.


1 commentaires

4 Réponses :


6
votes

J'ai vu ce problème avec oisif et matplotlib lorsque vous les utilisez sous Windows. Je ne connais pas la cause exacte, mais CTRL-C a plusieurs fois a généralement travaillé pour moi. Si cela ne fonctionne pas pour vous, vous pouvez utiliser l'interpréteur normal au lieu d'écrire votre tracé directement dans un fichier au lieu de l'écran.

C'est l'un de ces temps (abondants) lorsque l'inactif ne se comporte pas comme un script Python normal ou une session d'interprète. À cause de cela, j'évite habituellement de ralenti.


2 commentaires

Malheureusement, les options sur Windows ne sont pas super. J'utilise directement l'interprète interactif (malgré la cmd.exe qui ne sont pas tous agréables) et appelez Python de GVIM pour exécuter des scripts. Tout nombre d'éditeurs et d'IDes peut appeler Python directement, et nombre d'entre eux sont répertoriés sur wiki.python.org/ Moin / intégréDevelopmentEnvironnements . Ipython peut souffrir de certains des mêmes problèmes de ralenti, mais je soupçonne que cela sort de sa manière de faire du travail matplotlib (je ne l'utilise jamais moi-même, donc je ne peux pas le promettre).


Lorsque l'on appuie sur la coquille de Highle, la coquille envoie un message au processus d'exécution pour augmenter l'interruption. La plupart du temps où cela échoue, il aurait échoué si l'on avait frappé ^ C en courant directement sous Python. Il y a des raisons complètement indépendantes du ralenti pourquoi Python ne peut pas toujours arrêter et émettre de manière gracieuse a >>> une invite sur un signal d'interruption ^ C.



2
votes

Lorsque vous utilisez plt.show () , le sous-processus Python entre dans la boucle d'événement de la boîte à outils de l'interface graphique et les blocs jusqu'à la sortie de la boucle d'événement. Quand il quitte, vous récupérez l'invite.

Si vous utilisez le backend Tkagg, vous devrez déplacer votre souris sur une figure après avoir appuyé sur CTRL + C. Cela fera l'arrêt de la boucle d'événement. (Tkinter a ses bizarreries)

alternativement, Idlex offre la prise en charge matplotlib avec inactif à l'aide de l'extension EventLoop.py. Vous pouvez afficher et interagir avec des figures sans utiliser plt.show () . Assurez-vous simplement de définir plt.interactive (true) avant de générer des figures.


0 commentaires

7
votes

Ctrl + F6 (Redémarrez Shell)

ou shell-> redémarrer coquille


0 commentaires

1
votes

J'ai eu le même problème dans l'éditeur de Python Canopy Python, et j'ai pu interrompre la session Python avec Ctrl +. (bouton "DOT"). J'espère que cela aide, sinon ils font probablement des choses de la même manière


0 commentaires