使用parfor进行许多Web请求

我的同事让我访问一个网络服务器上的所有页面,以便填充它的缓存。我计划使用parfor及时浏览超过25万页。我还需要不要开得太快,以免服务器超载。

我使用parfor这是一种罕见的情况,您可以使用更多的MATLAB工作者,而不是可用的物理或甚至逻辑处理器,这通常是不推荐的。它能工作是因为网络请求需要大量的等待,通常我需要在MATLAB中做的处理很少。

当我尝试不同数量的工人时,我承认这段视频接近结束了一点无聊。请记住,您可以在播放器的右下角增加视频的播放速度。

本文涉及的特性代码风格包括:视频

  • parfor

跟着我 (@stuartmckarrity.),如果你想在我发帖时通过Twitter得到通知。

以全屏模式播放视频以获得更好的观看体验。最终代码在这里:

%%为URL进行设置

%假设具有“URL”变量/列的SPREASD表格
pagesFileName = " FILEPATH \ all-aem-pages.xlsx”;
环境=(“dev2”“dev3”);
环境=环境(2);
选项= weboptions('超时',60);
totalStartTime =时钟;
%%获取页面列表
如果已在基本工作区中,则重用表
如果~存在(“页”、“var”)
页面= readtable(pagesfilename,'texttype','string');
结束
%%创建URL列表
%转换环境
url =取代(pages.urls”。Mathworks ","-" + environment + ".mathworks");
% %开始工人
% 12用于开发服务器
Startpool(12);
%%提出请求
成功= false(高度(页面),1);
parfor k = 1:高度(页面)
开始时间= [];parfor的初始化
url = url (k);
尝试
开始时间=时钟;
content = webrabread(URL,选项);
成功(k) = true;
FPRINTF('成功访问(%d的%d):%s(%2.1f sec)。\ n',k,高度(页),URL,eTime(时钟,starttime));

FPRINTF('访问失败(%d的%d):%s(%2.1f sec)。\ n',k,高度(页面),URL,ETIME(时钟,starttime));
结束
结束

%% 结束
流(完成%年代\ 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帐户或创建一个新帐户。