Comment puis-je interrompre quand il Matlab devient vraiment très occupé?
-
18-09-2019 - |
Question
Je suis en une longue simulation dans que je Matlab me suis rendu compte que je dois arrêter et exécutez à nouveau. Cependant, Matlab est vraiment dans ce calcul, et il a cessé de répondre. Comment puis-je interrompre cette course sans tuer Matlab?
(Je sais que c'est un problème avec de nombreux programmes Windows, mais il est vraiment aigu avec Matlab.)
La solution
Aller à la fenêtre de commande, et appuyez beaucoup Ctrl-C. D'après mon expérience, sur une seule machine-core vous n'avez pas de chance, à moins que vous faire beaucoup de sortie. Sur un multi-core ou machine multi-processeur, vous vous arrêterez probablement par la suite, mais il faut du temps.
Voir aussi http: //www.mathworks. com / support / solutions / fr / data / 1-188VX / index.html
Ajouté : il est une bonne pratique (1) enregistrer un instantané de votre espace de travail avant d'exécuter quoi que ce soit vraiment long et (2) dans un calcul très long, écrire quelques-unes des variables à un fichier de temps à autre, afin que vous puissiez reprendre le calcul si elle a été interrompue (par une panne de courant, par exemple).
Autres conseils
Dans quelle Matlab répond à plutôt CTRL-C dépend de ce qu'il fait. Si elle est au milieu d'un appel par exemple BLAS ou LAPACK, il ne répondra pas jusqu'à ce que les retours d'appels. Si vous êtes dans un bloc de code où beaucoup de lignes de Matlab sont en cours d'exécution, vous pouvez vous attendre CTRL-C pour être plus réactif.
J'ai un truc très simple de faire une pause (ou arrêter) une exécution non recevable. Si ma simulation est en cours d'exécution d'une longue boucle, je fais toujours ce qui suit:
for ii = 1:N
do_stuff();
clear empty_script;
empty_script;
end
Et puis créez un empty_script.m
de fichier contenant les éléments suivants:
%keyboard
Chaque fois que je veux mettre en pause l'exécution j'ouvre un éditeur de texte externe et décommenter la ligne en disant keyboard
dans empty_script.m
. Cela me laisse en mode débogage où je peux regarder les variables, modifier des choses ou même arrêter le programme.
Une autre stratégie pour faire face à ce problème est d'introduire une très courte pause quelque part dans le calcul (en particulier dans une boucle FOR ou WHILE), comme dans:
for ii = 1:N
do_stuff();
pause(0.1);
end
Cela augmente les chances que votre maniaques Ctrl-C'ing se fait arrêter.
vous pouvez trouver le processus Matlab dans les fenêtres gestionnaire de tâches et définir la priorité haute ou basse et laisser d'autres programmes moins prioritaires ou plus. Dans mon expérience, il est un moyen efficace.
si vous l'habitude d'arrêter et puis exécutez à nouveau tuer n'est pas mauvais choix Aller aux tâches de Windows Manager-> Processus puis condamné à une amende matlab.exe et appuyez sur le bouton Terminer le processus