3

我已经定义了一个函数f(x, y, z)Julia我想并行计算、hold和fixedf的许多值。使用 什么是“最佳实践”方法?xyzpmap

如果它是类似的东西就好了pmap(f, x, y = 5, z = 8),这就是apply家庭如何处理 中的固定参数R,但它似乎没有那么简单。我已经设计了解决方案,但我发现它们并不优雅,并且我怀疑它们是否能很好地概括我的目的。

  • 我可以包装f一个函数gwhere g(x) = f(x, y = 5, z = 8). 然后我简单地打电话pmap(g, x)。这不像我想要的那么简约。
  • 我可以将 5 和 8 设置为定义的默认值,y然后调用. 这让我在我想修复某个变量的值的情况下感到不舒服,其中(有充分理由)在定义的时间没有定义,但会在被调用的时候定义。它有效,但它有点吓到我。zfpmap(f, x)yaaff
4

1 回答 1

7

一个很好的解决方案是使用匿名函数,例如

g(y, z) = x -> f(x, y, z)

pmap(g(5, 8), x)

要不就

pmap(x -> f(x, 5, 8), x)

在 Julia 0.4 中,匿名函数有性能损失,但是这将在 0.5 中消失。

于 2016-06-04T03:06:05.533 回答