matlab並行工具包使用簡單示例

使用parpool來啓動多個worker,然後用parfor來替代原來的for,需要注意的幾個事項是:

(記錄自https://blog.csdn.net/duanlangzhuifeng/article/details/17679343

1.parfor不可以嵌套循環,不可以修改循環變量

parfor i = 1:N
   i = i + 1;%這裏修改了循環變量
   a(i) = i;
end

2.循環中不能相互訪問:

%%這種操作是錯誤的,在並行過程中,同一個位置可能會被同時訪問
parfor i=1:N
    a(i)=a(i+1)+1;
end

3. 矩陣或者數組的訪問應該直接使用下標,而不應該是表達式

A = zeros(4, 11);
parfor i = 1:4
   for j = 1:10
      A(i, j + 1) = i + j;
   end
end
可以改成:

A = zeros(4, 11);
parfor i = 1:4
   for j = 2:11
      A(i, j) = i + j + 1;
   end
end
--------------------- 
作者:Andrew_Zhu 
來源:CSDN 
原文:https://blog.csdn.net/duanlangzhuifeng/article/details/17679343 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

我自己在轉圖片格式的時候也寫了一個簡單的parfor應用實例

clc;
close all;
clearvars;
path1=Yourfilepath;
parpool(4);
list=dir([]);
% parpool(4);
parfor i=1:size(list,1)
    str=list(i).name;
    disp(str);
    im=importdata(str);
    if(~isempty(im))
    im=mat2gray(im);
    imname=[path1,'2018',num2str(i),'.jpg'];
    disp(imname);
    imwrite(im,imname);
%      imshow(im);
%      pause();
    end
end

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章