Как я могу прервать MATLAB, когда он очень занят?
-
18-09-2019 - |
Вопрос
Я запускаю длинную симуляцию в МАТЛАБ что я понял, что мне нужно остановиться и начать заново.Однако MATLAB действительно увлекся этим расчетом и перестал отвечать.Как я могу прервать этот запуск, не убивая MATLAB?
(Я понимаю, что это проблема многих программ Windows, но в MATLAB она особенно остра.)
Решение
Перейдите в командное окно и нажмите Ctrl-C.По моему опыту, на одноядерной машине у вас нет шансов, если вы не выполняете большой объем вывода.На многоядерной или многопроцессорной машине вы, вероятно, в конце концов остановите его, но это требует времени.
Смотрите также http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html
Добавлен:хорошей практикой является (1) сохранять снимок вашего рабочего пространства перед выполнением чего-либо действительно длительного и (2) в течение очень длительного расчета время от времени записывать некоторые переменные в файл, чтобы вы могли возобновить расчет. если оно было прервано (например, из-за сбоя питания).
Другие советы
Насколько хорошо MATLAB реагирует на сочетание клавиш CTRL-C, скорее, зависит от того, что он делает.Например, если он находится в середине вызова BLAS или LAPACK, он не ответит, пока этот вызов не вернется.Если вы находитесь в блоке кода, где выполняется множество строк MATLAB, вы можете ожидать, что сочетание клавиш CTRL-C будет более отзывчивым.
У меня есть очень простой способ приостановить (или остановить) не отвечающее выполнение.Если моя симуляция выполняется в длинном цикле, я всегда делаю следующее:
for ii = 1:N
do_stuff();
clear empty_script;
empty_script;
end
И затем создайте файл empty_script.m
содержащий следующее:
%keyboard
Всякий раз, когда я хочу приостановить выполнение, я открываю внешний текстовый редактор и раскомментирую строку, в которой говорится: keyboard
в empty_script.m
.Это оставляет меня в режиме отладки, где я могу наблюдать за переменными, изменять что-либо или даже останавливать программу.
Другая стратегия решения этой проблемы — ввести очень короткую паузу где-нибудь в расчете (особенно в циклах FOR или WHILE), например:
for ii = 1:N
do_stuff();
pause(0.1);
end
Это увеличивает вероятность того, что ваше маниакальное сочетание клавиш Ctrl-C действительно остановит это.
вы можете найти процесс MATLAB в диспетчере задач Windows, установить высокий или низкий приоритет и позволить другой программе иметь более низкий или более высокий приоритет.По моему опыту, это эффективный способ.
Если вы не остановитесь и повторяете, то убийство не является плохим выбором. Перейдите к Windows Task Manager-> Процессы, затем оштрафован Matlab.exe и нажмите кнопку процесса конечного процесса