我有保持在一個while循環運行的兩個功能如何在MATLAB中運行並行函數?
其中之一是「的GetData」,另一種是「data_analysis」
data_analysis需要幾秒鐘的GetData需要幾秒鐘
我需要data_analysis使用最新的可用數據,所以我希望在data_analysis運行時getdata繼續運行。
我已經並行計算工具箱2017A
我有保持在一個while循環運行的兩個功能如何在MATLAB中運行並行函數?
其中之一是「的GetData」,另一種是「data_analysis」
data_analysis需要幾秒鐘的GetData需要幾秒鐘
我需要data_analysis使用最新的可用數據,所以我希望在data_analysis運行時getdata繼續運行。
我已經並行計算工具箱2017A
您想運行getdata
汽車無,每當的getdata
一個實例完成後,要運行並行data_analysis
,對不對?
然後,您需要在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指出的:在某些時候,您還需要撥打fetchOutputs
,f
來檢索結果。
如果data_analysis不返回任何內容,則行parfeval(p, @data_analysis, 0, args);
應該足夠。
聲明:我目前無法運行matlab,所以我還沒有測試過。
parfeval調用的正確語法爲:f = parfeval(p,@ data_analysis,numOut,args) ;其中'numOut'是'data_analysis'提供的輸出數量。當然,在某些時候,您還需要在'f'上調用'fetchOutputs'來檢索結果。 – Edric
查看http://mathworks.com/help/distcomp/parfeval.html – Swier