Я хотел бы закрыть свой параллельный пул нажатием кнопки в графическом интерфейсе Matlab, чтобы остановить выполнение функций, работающих на этих работниках пула.
К сожалению, это работает только при запуске функций с помощью «parfeval()». В этом случае, как только я нажимаю кнопку, мой параллельный пул закрывается, и поэтому функции, вызываемые с помощью parfeval(), перестают выполняться.
Поскольку я предпочитаю использовать "spmd" вместо "parfeval" для установления связи между работниками, я попробовал то же самое, но это не удалось.
При нажатии кнопки ничего не происходит, и параллельный пул закрывается только тогда, когда я отменяю весь скрипт с помощью 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, сервера OPC UA и различных датчиков и непрерывной записи собранных данных в базу данных SQL.
Чтобы записать данные в БД, я подумал о другой параллельной функции — назовем ее «writeDB», — которая получает порции данных от функций сбора данных и загружает их.
Кнопка остановки должна завершить сбор данных, прервав все функции — в настоящее время я делаю это, удаляя parpool.
Заранее спасибо!