我想通过在 Matlab GUI 中按下按钮来关闭我的并行池,以停止执行在这些池工作者上运行的函数。
不幸的是,这仅在使用“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 来完成此操作。
提前致谢!