Как я могу прервать MATLAB, когда он действительно очень занят?

34

Я выполняю длинную симуляцию в MATLAB, что я понял, что мне нужно остановить и повторить. Однако MATLAB действительно участвует в этом расчете, и он перестает отвечать. Как я могу прервать этот прогон, не убив MATLAB?

(Я понимаю, что это проблема со многими программами Windows, но это очень важно для MATLAB.)

  • 1
    Ctrl-C не работает?
  • 2
    Дубликат: stackoverflow.com/questions/1500314/…
Показать ещё 1 комментарий
Теги:
interrupt
windows-xp

6 ответов

21
Лучший ответ

Перейдите в командное окно и нажмите Ctrl-C много. По моему опыту, на одноядерной машине у вас нет шансов, если вы не будете делать много выходных данных. На многоядерном или многопроцессорном компьютере вы, вероятно, остановите его, но потребуется время.

См. также http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html

Добавлен: это хорошая практика: (1) сохранить снимок рабочего пространства перед запуском чего-либо очень долго и (2) в очень длинном вычислении, записать некоторые из переменных в файл время от времени, чтобы вы могли возобновить вычисление, если оно было прервано (например, сбой питания).

  • 1
    Я согласен, но иногда я убиваю его с помощью диспетчера задач Windows, а не bashc Ctrl-C, как сумасшедшая обезьяна.
  • 4
    +1: Удар CTRL-C, как маньяк, обычно работает, но бывают ситуации, когда все выключается, и все это работает. Что немного раздражает, если не сказать больше ...
18

Насколько хорошо MATLAB отвечает CTRL-C, скорее зависит от того, что он делает. Например, если он посередине вызова BLAS или LAPACK, он не будет отвечать до тех пор, пока этот вызов не вернется. Если вы находитесь в блоке кода, где выполняется множество строк MATLAB, вы можете ожидать, что CTRL-C будет более отзывчивым.

6

У меня есть очень простой трюк, чтобы приостановить (или остановить) выполнение без ответа. Если мой симулятор работает с длинным циклом, я всегда делаю следующее:

for ii = 1:N
   do_stuff();
   clear empty_script;
   empty_script;
end

И затем создайте файл empty_script.m, содержащий следующее:

%keyboard

Всякий раз, когда я хочу приостановить выполнение, я открываю внешний текстовый редактор и раскомментирую строку keyboard в empty_script.m. Это оставляет меня в режиме отладки, где я могу наблюдать за переменными, изменять материал или даже останавливать программу.

5

Другая стратегия для решения этой проблемы - ввести очень короткую паузу где-нибудь в вычислении (особенно в цикле FOR или WHILE), как в:

for ii = 1:N
do_stuff();
pause(0.1);
end

Это увеличивает вероятность того, что ваш маниакальный Ctrl-C'ing фактически остановит его.

1

вы можете найти процесс MATLAB в диспетчере задач Windows и установить приоритет как высокий или низкий, и пусть другая программа имеет более низкий или более высокий приоритет. По моему опыту, это эффективный способ.

-3

Если вы хотите остановить и повторить, то убийство неплохое решение Перейдите в диспетчер задач Windows → Процессы, затем оштрафовать MATLAB.exe и нажмите кнопку "Завершить процесс"

  • 11
    ОП сказал " без убийства MATLAB".
  • 0
    >> «Я понял, что мне нужно остановиться и перезапустить»
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню