在parfeval下运行的函数的限制
17次观看(过去30天)
显示旧注释
我才明白
parfeval
R2021b允许运行并行功能(在后台),即使没有并行工具箱,这是一个伟大的特性。
然而,当我使用它时,屏幕输出显示/绘图似乎没有做什么,如本脚本所示。
我的问题是,是否有一个文档列出了在这样的并行线程中运行时不活跃的函数?
脚本栏。m将在R2021b下运行
以正常方式运行函数foo
res = foo (10)
%在后台运行函数foo
f = parfeval(backgroundPool,@foo,1,10);
流('等待后台函数foo完成…')
而真正的
如果比较字符串(f。状态,“完成”)
打破
结束
暂停(0.1);
结束
流(' \ n ');
res = fetchOutputs (f)
函数Res = foo(n)
Res = 0;
为i = 1: n
Res = Res + i;
流(“% d \ n”,我);当foo在后台运行时,这个语句什么也不做
暂停(1);
结束
结束
> >栏
1
2
3.
4
5
6
7
8
9
10
res =
55
等待后台函数foo完成…
res =
55
0评论
接受的答案
雷蒙德·诺里斯
2021年9月24日
流
也不是不活动/不工作
backgroundPool
不捕捉“日记”的
parfeval
.这与线程池具有相同的行为
F = parfeval(parpool)“线程”), @foo 1 10);
它具有与进程池类似的行为
F = parfeval(parpool)“本地”), @foo 1 10);
只有一个例外。对于进程池,在while循环中可以添加调用
f.Diary
它不会完全按照你想要的那样做——它每次都会打印整个日记。例如
ans =
1
2
3.
4
5
6
7
8
9
ans =
1
2
3.
4
5
6
7
8
9
10
但按你的意思,如果不打电话
f = parfeval(backgroundPool,@foo,1,10);
你打电话给
parforI = 1:1
Res = foo(10);
结束
你会看到
流
语句。我将与开发检查,但它将显示为思想屏幕I/O将是门控功能。