MATLAB中的多线程

Mad*_*ddy 19 matlab multithreading

我已经阅读了MATLAB关于多线程的信息以及它在某些函数中的内置方式.但是,我的要求是不同的.说,我有3个函数:fun1(data1),fun2(data2),fun3(data3)....我可以在这些函数之间实现多线程吗?我实际上有300多个使用大量数据的函数.多线程可以帮助我减少很多时间.请建议一个我可以进一步研究的命令或其他东西.谢谢!

Jon*_*nas 23

如果要在不同的处理器上运行一批不同的函数,可以使用并行计算工具箱,更具体地说,使用parfor循环,但是您需要将函数作为句柄列表传递.

funList = {@fun1,@fun2,@fun3};
dataList = {data1,data2,data3}; %# or pass file names 

matlabpool open 

parfor i=1:length(funList)
    %# call the function
    funList{i}(dataList{i});
end
Run Code Online (Sandbox Code Playgroud)

编辑: 从R2015a matlabpool函数开始已从 Matlab中删除,您需要调用parpool.

  • 如果函数具有输出变量,则可以将它们收集到单元数组中,例如`outList {i} = funList {i}(dataList {i})`. (3认同)
  • 在parfor之前使用matlabpool http://www.mathworks.de/help/toolbox/distcomp/matlabpool.html命令,或parfor只运行1个线程. (3认同)