图片缩略图

parfor_progressbar.

版本2.13.0.0 (4.97 KB) 丹尼尔特里
以图形方式监视parfor循环中迭代的完成情况
4.3
20次评级

6下载

更新2016年1月29日

视图版本历史

查看许可协议

创建图形进度指示器,以监视长时间运行循环中的迭代完成。使用类似于WAITBAR功能的MATLAB,但除了普通循环之外,它还适用于PAR循环。Worker线程写入临时文件以记录每个Parer迭代的完成,并且定时器定期更新进度条。通过在内部传递到WaitBar的可选参数,用户可以设置取消按钮或等待栏支持的任何其他选项。金宝app目前,只支持本地执行,但可以修改该函数以替换所有工人可访问的位置的金宝app临时器。
示例用法:

N = 50;parfor迭代的总数
hbar = parfor_progressbar(n,'请等待...');%创建进度条
parfor i = 1: N,
暂停(rand);%计算
hbar.iterate (1);%一次迭代更新进度
结束
关闭(百巴);%关闭进度条

引用作为

丹尼尔·特里(2021)。parfor_progressbar.(//www.tatmou.com/matlabcentral/fileexchange/53773-parfor_progressbar), MATLAB中央文件交换。检索

评论和评级(28

Ali Komai.

如果您有许多工人和许多迭代,则磁盘I / O操作会降低性能,以便使使用不可能。

wbadry

弗雷克萨克森

对文本文件的多次读写有一些严重的限制:1。非常耗时,2。同时读/写可能会引起一些麻烦,3。只在本地池上工作。
我实现了我自己的parfor进度监视器基于udp套接字(没有读/写问题,快得多,不仅在本地池工作)。
它显示了每个worker ->的剩余时间和进度https://de.mathworks.com/matlabcentral/fileexchange/71436-parfor-progress-monitor-progress-bar-v4

柯恩

伟大的功能且易于实施,但有了大迭代,即1000,我强烈建议在10个周期增加进度栏,以加快过程。在没有进度栏的情况下采取的时间:60秒,每次迭代205秒,每十个:66秒。
只需添加此:
'''
如果〜mod(i,10)
hbar.iterate (10);%一次迭代更新进度
“终结”

柯恩

伟大的功能,易于实现!

Ali Aghaeifar.

为进度条添加百分比值是不是很好

亚历克斯

AA

Kristoffer Walker.

伟大的功能。这正是我需要的。它不限于parfor循环。我只用了spmd块。谢谢。

克丽丝

戴夫李

当我比较两个运行的案例和没有hbar.terate(1)时,我看到这个进度条使Par循环运行更慢

约翰

伟大的功能,谢谢!

朱利安自由地

埃里克·查德威克

伟大的功能!在任何使用parfor循环的代码中,这都是一个非常好的特性。我想知道你有没有考虑过mo。en的建议增加一个百分比或剩余时间的估计?

Ali Komai.

M V.

为什么我收到以下错误?

为计时器parfor_progressbar计算TimerFcn时出错
parfor_progressbar类没有公共属性ipcfile

Mo.En

几乎按预期工作。

我有两个建议:
1.在进度条中添加百分比值。
2.添加一般的“剩余时间”估计

正义

如果添加了取消按钮,等待栏不能被删除:

hbar = parfor_progressbar(10,'请等待...'','createcanceLbtn','@()disp(''取消'')');
关闭(百巴);%不能删除hbar
删除(hbar);%不会删除hbar

正义

对不起,应该是

hbar = parfor_progressbar(10,'请等待...'','createcanceLbtn','@()disp(''取消'')');

陕西

Shachar

丹尼尔特里

在MATLAB 2016b上测试和工作。

梁王

伟大的工具,适用于2014年和2015年,但不再为2016年工作了。

Stefano imoscopi.

有用!

丹尼尔特里

谢谢你的评论,吉尔特。

我有一些如何做到这一点的想法。棘手的是,GUI对象在parfor循环中不会更新。可以在GUI线程中为等待栏窗口添加一个回调,该回调删除parfor_progress.txt状态文件,以告诉parfor线程停止。

如果我有什么可行的方法,我会随时通知你的。

Geert Verhoeven.

精心制作,非常有用。谢谢!
只有一个问题:我希望在关闭waitbar时,parcon循环停止(例如,如果用户看到算法需要年龄完成,他/她可以选择停止处理)。
到目前为止,我还没有做到这一点。我的代码

如果是谬误(hbar.wbh)
删除(GCP('nocreate'));
返回
结束

似乎不能工作,因为对象句柄WBH在关闭等待栏时不是空的。知道我该怎么做吗?

提前致谢。干杯,地球

乔恩·达德利

伟大的提交,谢谢。

丹尼尔特里

在最近的版本中修正了这个错误。请再试一次。

Shachar

运行它时,备用栏不会进展。并且有一个摇摆:

警告:在-nodisplay和-noFigureWindows启动选项. ...下金宝app不再支持此功能

Matlab释放兼容性
创建R2014a
兼容任何释放
平台的兼容性
视窗 苹果系统 Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区可以如何帮助您!

开始狩猎!