MATLAB 中的多线程

Posted

技术标签:

【中文标题】MATLAB 中的多线程【英文标题】:Multi-threading in MATLAB 【发布时间】:2010-12-20 23:27:11 【问题描述】:

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

【问题讨论】:

您是要运行 fun1 以便它使用多个处理器,还是要在一个处理器上运行 fun1,在第二个处理器上运行 fun2,等等? 【参考方案1】:

如果您想在不同的处理器上运行一批不同的函数,可以使用 Parallel Computing Toolbox,更具体地说,是 parfor 循环,但您需要将函数作为句柄列表传递。

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

matlabpool open 

parfor i=1:length(funList)
    %# call the function
    funListi(dataListi);
end

编辑: 从 Matlab 的 R2015a matlabpool 函数 has been removed 开始,您需要改为调用 parpool

【讨论】:

如果函数有输出变量,它们可以被收集到一个单元格数组中,例如outListi=funListi(dataListi). 在 parfor 之前使用 matlabpool mathworks.de/help/toolbox/distcomp/matlabpool.html 命令,否则 parfor 将只运行 1 个线程。【参考方案2】:

尝试查看Parallel Computing Toolbox.(不幸的是,我不太熟悉它,但这似乎是正确的地方。)查看gather 和parallel for-loops。

【讨论】:

以上是关于MATLAB 中的多线程的主要内容,如果未能解决你的问题,请参考以下文章

python中的多线程

详解python中的多线程

java中的多线程

Python中的多线程并行运行

MySQL中的多线程?

actionscript 中的多线程还是绿色线程?