一个非常Ressource高效的MATLAB类,用于在“阶段”过程中的进度监测,显示每个工作人员的剩余时间和可选进度。
它支持万博1manbetx分布式工人池(即不仅适用于本地池)。
用法:
%'numiterations'是一个整数,其中循环中的迭代总数。
%随意增加这甚至更高,看到其他进度监视器失败。
numiterations = 100000;
然后,构造一个parforprogressbar对象:
ppm = parforprogressbar(numiterations);
il id = 1:numitrations
%做一些并行计算
暂停(100 / numiterations);
%递增计数器以跟踪进度
ppm.increment();
结尾
%删除Paret循环完成时删除进度句柄(否则使更新进度可能不会停止的计时器)。
删除(ppm);
可选参数:
ppm = parforprogressbar(numiterations)构造一个parforprogressbar对象。
'numiterations'是一个整数,总数
循环中的迭代。
ppm = parforprogressbar(___,'showworkerprogress',true)将显示
所有工人的进度(默认值:假)。
ppm = parforprogressbar(___,'progressbarupdateperiod',1.5)将
每1.5秒更新ProgressBar(默认值:1.0秒)。
ppm = parforprogressbar(___,'标题','我的花哨冠军')将
在Progressbar上显示“我的花哨冠”。
ppm = parforprogressbar(___,'parpool','local')将会
使用“本地”配置文件启动并行池(Parpool)。
PPM = ParforProgressBar(___,'parpool',{profilename,poolsize,name,value})
将使用profileName配置文件启动并行池(Parpool)
池化工人和功能Parpool支持的任何名称值对。万博1manbetx
好处:
1.它是第一个进度监视器,也显示剩余时间。
2.这是第一个进度监视器,也显示每个工人的进度。
3.它从非常少量的迭代中缩放,以便在具有非常小的占地面积中任意大量的迭代。
缺点:
它确实减慢了计算。多少?这取决于您更新ProgressBar的频率(默认为1.0秒 - 但这是您可以调整的参数)。
更新计算机上的ProgressBar平均需要40毫秒。即,其中一个工人更新了ProgressBar(默认为每秒),每秒额外花费40毫秒= 4%。
但是你有X-1工人根本没有延迟(呼叫增量也有一个甚至数百万迭代的近似效果)。
2.它需要仪器控制工具箱
差异到60135-parim-progress-monitor-progress-progress-bar-v3:
1.使用[ProgressBar](https://de.mathwands.com/matlabcentral/fileexchange/6922-progressbar.)与剩下的时间很好。
2.完成MATLAB实施,没有Java。
3.每个增量,Dylan的基于Java的实现通过TCP连接到服务器,立即关闭连接而不发送任何数据。
服务器基于建立的连接递增计数器。
这是非常快的,但对于非常短的循环周期(如上所述)它会导致太多连接。
原始的ParforProgmonv3通过让用户手动选择STAPEIZE来解决此问题。然而,这是Comberome和非直观的。
此更新自动计算步骤,因此即使对于非常短的循环周期,也维持一个非常快速的执行时间。
4.而不是TCP套接字我们使用UDP插座,该UDP插座在施工上建立,并且在每个循环周期上未打开/关闭/关闭。
5.要跟踪每个工人的进度,每个工作人员通过UDP向服务器发送自己的进度。
6.小界面更改:我真的不关心进度条的窗口标题。这是现在是一个可选的参数,现在也由Matlab的输入解析器正确监控。
引用
褶皱saxen(2021)。PAR进度监视器(进度条)v4(https://github.com/fsaxen/parforprogmon),github。检索到。