私はparfor
この方法で並列にデータを処理しています:
iteration = 10;
result = zeros(1, iteration);
matlabpool open local 2
parfor i = 1:iteration
data = generate_data();
result(i) = process_data(data);
end
end
matlabpool close
問題なく動作しますが、問題が 1 つあります。私の関数generate_data
は一意のデータ (つまり、0、1、2、3、4 ...) を生成しますが、実際には、同じ値を 2 回与えることがあります (そして、0、1、1、2、3、4、4、5、 ...)。簡単に言えば、私の関数は次のようになります。
function data = generate_data()
persistent counter generated_data;
if(isempty(counter))
counter = 1;
generated_data = [0 1 2 3 4 5 6 7 8 9];
end
data = generated_data(counter);
counter = counter + 1;
どうすればこれを修正できますか?