Я хотел бы закрыть свой параллельный пул нажатием кнопки в Matlab GUI, чтобы остановить выполнение функций, выполняемых на этих рабочих пула.
К сожалению, это работает только при запуске функций с " parfeval ()». В этом случае, как только я нажимаю кнопку, мой параллельный пул закрывается, и поэтому функции, вызываемые с помощью parfeval (), перестают работать.
Поскольку я предпочитаю использовать "spmd", а не "parfeval", чтобы установить sh связь между рабочими, я попробовал то же самое, но это не удалось.
Ничего не происходит при нажатии кнопки, и параллельный пул отключается, как только я отменяю весь скрипт с помощью ctrl + c.
Надеюсь, что кто-то может помочь мне с этой проблемой.
Работает:
function StartButtonPushed2(app,event)
pool = gcp();
parfeval(pool, @dosomething, 0, app);
end
Не работает:
function StartButtonPushed1(app,event)
pool = gcp();
spmd
dosomething(app);
end
end
function StopButtonPushed(app,event)
delete(gcp); %shutdown pool
end
Цель:
Моя конечная цель - параллельно запускать различные функции с помощью кнопки запуска.
Предполагается, что эти функции собирают данные с SPS, OP C UA-сервера и различных датчиков и непрерывно записывают собранные данные в базу данных SQL.
Для записи данных в БД Я думал о другой параллельной функции - давайте назовем ее «writeDB», которая получает порции данных из функций сбора данных и загружает их.
Кнопка «Стоп» должна завершить сбор данных, прерывая все функции - в настоящее время я делаю это, удаляя пул.
Заранее спасибо!