在Julia

时间:2016-06-03 23:05:42

标签: parallel-processing julia pmap

我在f(x, y, z)中定义了一个函数Julia,我希望为f的多个值平行计算x,保持y和{{1}修复了。什么是最佳实践"使用z

执行此操作的方法

如果它像pmap那样会很好,这就是pmap(f, x, y = 5, z = 8)系列在apply处理固定参数的方式,但它看起来并不简单就是这样。我已经设计出了解决方案,但我发现它们不够优雅,我怀疑它们会为我的目的很好地概括。

  • 我可以将R包裹在f的{​​{1}}函数中。然后我只需致电g。这比我想要的要简约。
  • 我可以在定义g(x) = f(x, y = 5, z = 8)时将5和8设置为pmap(g, x)y的默认值,然后调用z。如果我想将f修改为某个变量pmap(f, x)的值,这会让我感到不舒服,其中y(有充分理由)在{{{{}时没有定义1}}已定义,但将在调用时a。它有效,但有点让我感到害怕。

1 个答案:

答案 0 :(得分: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中消失。