Parallel processing 使用并行工具箱创建具有有限工作人员(线程池)的任务/作业池

Parallel processing 使用并行工具箱创建具有有限工作人员(线程池)的任务/作业池,parallel-processing,matlab,Parallel Processing,Matlab,我想使用并行计算工具箱来加速一组互不依赖的函数调用。为了提高效率,我想使用计时器函数/回调函数在我的一个函数完成执行后继续执行更多的函数。我不知道哪一个会更快,所以我不能把我的函数集分成几个池,然后并行设置它们 换句话说,我想要一些并行执行来保持从函数池中提取 唯一的设置方法现在我有了一个字符串单元格数组,可以使用str2fun,有更好的方法吗 欢迎提问。为什么不做一些简单的事情,比如: matlabpool 3 parfor t=1:3 if t==1 a1=f1(); en

我想使用并行计算工具箱来加速一组互不依赖的函数调用。为了提高效率,我想使用计时器函数/回调函数在我的一个函数完成执行后继续执行更多的函数。我不知道哪一个会更快,所以我不能把我的函数集分成几个池,然后并行设置它们

换句话说,我想要一些并行执行来保持从函数池中提取

唯一的设置方法现在我有了一个字符串单元格数组,可以使用
str2fun
,有更好的方法吗


欢迎提问。

为什么不做一些简单的事情,比如:

matlabpool 3

parfor t=1:3
  if t==1
    a1=f1();
  end
  if t==2
    a2=f2();
  end
  if t==3
    a3=f3();
  end
end

没有必要自己编写这样的代码。Matlab并行工具箱能够创建一个。 您可以多次调用
createJob
,调度程序将执行拉取操作

 foos = [@foo1,@foo2,@foo3,@foo4]
 for i=1:numel(foos)
     obj = createJob();
     createTask(obj, foos(i), 1, {'your input'});
     submit(obj);
 end

函数句柄的单元格数组比普通数组工作得更好-避免在索引到数组和计算函数句柄之间产生混淆。事实上,在R2011b中,您无法连接函数句柄。谢谢,@Edric。调用
eval
而不是应用函数句柄是否会有开销?您不需要调用
eval
,但可能需要
feval
(也许这就是您的意思)。我不确定,但我怀疑直接计算函数句柄和调用
feval
之间是否有很大区别(如果有)。