利用parfor许多Web请求

我的同事问我访问web服务器上的所有页面,以填充缓存。我计划使用parfor通过超过250 k页及时。我还需要不会太快,超载服务器。

我使用parfor网页访问之前,发现它是一种罕见的情况下,您可以使用MATLAB工人超过可用物理甚至逻辑处理器,一般不建议。它的工作原理,因为web请求需要很多的等待,并且经常在MATLAB处理我需要做的是什么。

我承认这个视频变得有点无聊接近尾声,我尝试不同数量的工人。记住,你可以增加视频的回放速度在右下角的球员。

功能覆盖在这代码风格包括:视频

  • parfor

跟我来(@stuartmcgarrity通过Twitter)如果你想要通知我。

播放视频全屏模式更好的浏览体验。最后的代码是:

% %发出请求的url

%假定spreasdsheet“url”变量/列
pagesFileName = " FILEPATH \ all-aem-pages.xlsx”;
环境= (“dev2”“dev3”);
环境=环境(2);
选择= weboptions(“超时”,60);
totalStartTime =时钟;
% %得到的列表页面
%如果重用表已经在基本工作空间
如果~存在(“页”、“var”)
页面= readtable (pagesFileName TextType, '字符串');
结束
% %创建url的列表
%转换环境
url =取代(pages.urls”。mathworks”、“-”+环境+“.mathworks”);
% %开始工人
% 12开发服务器
startPool (12);
% %发出请求
成功= false(高度(页面),1);
parfor k = 1:高度(页面)
开始时间= [];%初始化对parfor
url = url (k);
试一试
开始时间=时钟;
内容= webread (url选项);
成功(k) = true;
流('成功访问(% d % d): % s (% 2.1 f sec)。\ n, k,身高(页面)、url、结束(时钟,开始时间));

流(“失败的访问(% d % d): % s (% 2.1 f sec)。\ n, k,身高(页面)、url、结束(时钟,开始时间));
结束
结束

% %完成
流(完成%年代\ n, myETimeStr (totalStartTime))

% %本地函数
函数p = startPool (numWorkers)
p = gcp (“nocreate”);
如果isempty (p)
p = parpool (numWorkers);
elseif p.NumWorkers ~ = numWorkers
删除(p);
p = parpool (numWorkers);
结束
结束

函数y = myETimeStr(开始时间)
%返回一个字符串(mm: ss)从一个运行时间以秒为单位。

y = char(持续时间(0,0,结束(时钟,开始时间),“格式”,“mm: ss”));

结束

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。