2017-08-11 25 views
0

私はwhileループでそれらのMATLABで並列関数を実行するには?

つを実行し続ける二つの機能を持っているが、「函」で、もう一つは「data_analysis」です

data_analysisは数秒かかり、函は

数秒かかります

私はdata_analysisが最新の利用可能なデータを使用する必要があるので、data_analysisが実行されている間はgetdataを実行し続けます。

私はあなたが継続的にgetdataを実行したい、とgetdataのインスタンスが終了したときはいつでも、あなたは右、並列にdata_analysisを実行する並列コンピューティングツールボックス2017a

+0

は、http://mathworks.com/help/distcomp/parfeval.htmlを見てください。 – Swier

答えて

0

がありますか?

whileループでgetdataを実行し、並列プールで実行するにはdata_analysisを呼び出します。次のコードは、これを行う必要があります。

p = gcp(); % builds a parallel pool 
while true 
    getdata(); % continuously runs the getdata function 
    f = parfeval(p, @data_analysis, numOuts, args); % runs the data_analysis function 
               % in the parallel pool 
end 

numOutはdata_analysisから供給される出力の数です。
argsは、data_analysisに渡す引数です。

Edricが指摘したとおり、fetchOutputsfに呼び出して結果を取得する必要があります。

data_analysisが何も返さない場合は、parfeval(p, @data_analysis, 0, args);で十分です。

免責事項:現時点ではmatlabを実行できないため、まだテストしていません。

+0

'parfeval'呼び出しの正しい構文は次のようになります。' f = parfeval(p、@ data_analysis、numOut、args) ' ; 'numOut'は' data_analysis'によって供給される出力の数です。もちろん、ある時点で結果を取得するために 'f'で' fetchOutputs'を呼び出す必要もあります。 – Edric

関連する問題