ParallelSubmit[expr]
在下一个并行内核上计算 expr,并返回一个 EvaluationObject 表达式.
ParallelSubmit[{var1,var2, …},expr]
在传递 expr 前构建给出变量的解析式表示.
ParallelSubmit
ParallelSubmit[expr]
在下一个并行内核上计算 expr,并返回一个 EvaluationObject 表达式.
ParallelSubmit[{var1,var2, …},expr]
在传递 expr 前构建给出变量的解析式表示.
更多信息和选项
- ParallelSubmit[{var1,var2, …},expr] 在提交计算前,将 vari 的当前值用 expr 替代.
- ParallelSubmit 有属性 HoldAllComplete.
范例
打开所有单元 关闭所有单元基本范例 (3)
ParallelSubmit[1 + 2]WaitAll[%]Table[ParallelSubmit[{i}, Total[FactorList[x ^ i + 1][[2 ;; , 2]]]], {i, 15, 20}]WaitAll[%]fl[n_] := Total[FactorList[x ^ n + 1][[2 ;; , 2]]]DistributeDefinitions[fl]WaitAll[Table[ParallelSubmit[{i}, fl[i]], {i, 21, 30}]]范围 (3)
使用 Table 提交计算:
evs = Table[ParallelSubmit[{i}, {i, PrimeQ[2 ^ i - 1]}], {i, 2200, 2222}];WaitAll[evs]evs = Map[ParallelSubmit[PrimeQ[2 ^ # - 1]]&, Range[2200, 2222]];WaitAll[evs]WaitAll[Table[ParallelSubmit[First[Timing[Inverse[RandomReal[{-1, 1}, {1000, 1000}]]]]], {$KernelCount}]]应用 (4)
With[{base = 10 ^ 1000, r = 10 ^ 10}, WaitAll[Table[ParallelSubmit[
While[!PrimeQ[p = RandomInteger[{base, base + r}]], Null];p], {$KernelCount}]] - base]With[{base = 10 ^ 1000, r = 10 ^ 10}, evs = Table[ParallelSubmit[
While[!PrimeQ[p = RandomInteger[{base, base + r}]], Null];p - base], {$KernelCount}];
PrintTemporary[evs];
WaitAll[evs]]With[{base = 10 ^ 1000, r = 10 ^ 10},
SetSharedVariable[stop];stop = False;
WaitAll[Table[ParallelSubmit[
While[!PrimeQ[p = RandomInteger[{base, base + r}]], If[stop, Return[$Failed]]];stop = True;Return[p - base]], {$KernelCount}]]]SetAttributes[concurrentEvaluate, HoldAll]
concurrentEvaluate[l_List] := WaitAll[ParallelSubmit /@ Unevaluated[l]]concurrentEvaluate[{$KernelID, PrimeQ[2 ^ 2203 - 1], $KernelID}]使用 ParallelCombine 达到同样的目的:
ParallelCombine[Identity, Unevaluated[{$KernelID, PrimeQ[2 ^ 2203 - 1], $KernelID}], Method -> "FinestGrained"]evs = Table[ParallelSubmit[{i}, Count[2 ^ Range[1000i, 1000(i + 1) - 1] - 1, _ ? PrimeQ]], {i, 2, 5}];
Total[WaitAll[evs]]使用 Parallelize 达到同样的目的:
Parallelize[Count[2 ^ Range[2000, 5999] - 1, _ ? PrimeQ]]属性和关系 (3)
"FinestGrained" Method 设置把每个项作为一个单独的计算来调度:
ParallelTable[Labeled[Framed[f[i]], $KernelID], {i, 12}, Method -> "FinestGrained"]在内部,它的工作方式与 WaitAll[ParallelSubmit[…]] 相似:
WaitAll[Table[ParallelSubmit[{i}, Labeled[Framed[f[i]], $KernelID]], {i, 12}]]AbsoluteTiming[WaitAll[Table[ParallelSubmit[{t}, Pause[t];t], {t, 1, 7}]]]AbsoluteTiming[WaitAll[Table[ParallelSubmit[{t}, Pause[t];t], {t, 7, 1, -1}]]]使用 LocalSubmit 来同时运行单个计算:
LocalSubmit[$ProcessID, HandlerFunctions -> <|"TaskFinished" -> ((processID = #EvaluationResult)&)|>,
HandlerFunctionsKeys -> "EvaluationResult"
]processID用 LocalEvaluate 在另一个本地内核中执行同样的计算并等待结果:
LocalEvaluate[$ProcessID]用 ParallelSubmit 在并行子内核中执行同样的计算:
job = ParallelSubmit[$ProcessID]WaitAll[job]可能存在的问题 (3)
ParallelSubmit 不在主核上计算它的参数:
WaitAll[Table[ParallelSubmit[2 ^ i], {i, 10}]]WaitAll[Table[ParallelSubmit[{i}, 2 ^ i], {i, 10}]]使用 With 插入局部变量的值:
WaitAll[Table[With[{i = i}, ParallelSubmit[2 ^ i]], {i, 10}]]results = {};
WaitAll[Table[ParallelSubmit[{p}, If[PrimeQ[2 ^ p - 1], AppendTo[results, p]];], {p, 2000, 3000}]];
resultsSetSharedVariable[global]global = {};
WaitAll[Table[ParallelSubmit[{p}, If[PrimeQ[2 ^ p - 1], Quiet[AppendTo[global, p]]];], {p, 2000, 3000}]];
globalAbsoluteTiming[WaitAll[Table[ParallelSubmit[{i}, N[Sin[i]]], {i, 1000}]];]AbsoluteTiming[ParallelTable[N[Sin[i]], {i, 1000}, Method -> "CoarsestGrained"];]AbsoluteTiming[Table[N[Sin[i]], {i, 1000}];]巧妙范例 (2)
通过和 ParallelSubmit 的函数组合,并行化一个函数运算:
Map[f, {a, b, c, d}]WaitAll[Map[Composition[ParallelSubmit, f], {a, b, c, d}]]factors = Table[ParallelSubmit[{i}, Plus@@FactorInteger[2 ^ i - 1][[All, 2]]], {i, 195, 170, -1}];
PrintTemporary[factors];
WaitAll[factors]相关的工作流程
- 执行并行计算
文本
Wolfram Research (2008),ParallelSubmit,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ParallelSubmit.html.
CMS
Wolfram 语言. 2008. "ParallelSubmit." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/ParallelSubmit.html.
APA
Wolfram 语言. (2008). ParallelSubmit. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ParallelSubmit.html 年
BibTeX
@misc{reference.wolfram_2026_parallelsubmit, author="Wolfram Research", title="{ParallelSubmit}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/ParallelSubmit.html}", note=[Accessed: 17-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_parallelsubmit, organization={Wolfram Research}, title={ParallelSubmit}, year={2008}, url={https://reference.wolfram.com/language/ref/ParallelSubmit.html}, note=[Accessed: 17-June-2026]}