什么是Furr';s";黑魔法;
我使用R包什么是Furr';s";黑魔法;,r,environment-variables,furrr,R,Environment Variables,Furrr,我使用R包furr满足我的大部分并行化需求,并且基本上从不存在将东西从全局环境导出到集群的问题。今天我做到了,我不知道为什么。包文档似乎将全局变量发送到集群的过程描述为“黑魔法”。黑魔法是什么 furr::future_options文档说明: 全局变量和包 默认情况下,future包将执行黑魔法来查找furr调用所需的全局变量和包,并将这些导出到每个worker。然而,它并不总是完美的,并且可以使用globals和packages参数进行优化 作为第二个问题:有没有一种优雅的方式告诉它去做它的
furr
满足我的大部分并行化需求,并且基本上从不存在将东西从全局环境导出到集群的问题。今天我做到了,我不知道为什么。包文档似乎将全局变量发送到集群的过程描述为“黑魔法”。黑魔法是什么
furr::future_options
文档说明:
全局变量和包
默认情况下,future包将执行黑魔法来查找furr调用所需的全局变量和包,并将这些导出到每个worker。然而,它并不总是完美的,并且可以使用globals和packages参数进行优化
作为第二个问题:有没有一种优雅的方式告诉它去做它的黑魔法,但也要出口它错过的东西?或者,选项a)都是黑魔法,还是b)在
.options
参数中都是硬编码?这并不能完全回答问题,但我认为它为您指明了正确的方向。从以下内容的“全局”部分:
它是在包的帮助下完成的,包使用静态代码检查来识别全局变量。如果确定了全局变量,则会捕获该变量并将其提供给评估过程
还有(上面@michael链接的内容)讨论了globals包中静态代码eval产生的一些常见“gotcha”问题
我在这里找到了自己的方法,因为我的future\u map()
code未能找到我在glue()调用中引用的变量。这个小插曲正好解释了为什么会发生这种情况
至于为什么你的代码有时有效,有时无效,很难说。但正如你所看到的,在幕后有着足够的复杂性,如果一些看似无关的变化破坏了某些东西,我并不感到惊讶。(对我来说,这一变化是清理我的代码,并使用胶水
而不是粘贴
:耸耸肩:)这并不能完全回答问题,但我认为它为你指明了正确的方向。从以下内容的“全局”部分:
它是在包的帮助下完成的,包使用静态代码检查来识别全局变量。如果确定了全局变量,则会捕获该变量并将其提供给评估过程
还有(上面@michael链接的内容)讨论了globals包中静态代码eval产生的一些常见“gotcha”问题
我在这里找到了自己的方法,因为我的future\u map()
code未能找到我在glue()调用中引用的变量。这个小插曲正好解释了为什么会发生这种情况
至于为什么你的代码有时有效,有时无效,很难说。但正如你所看到的,在幕后有着足够的复杂性,如果一些看似无关的变化破坏了某些东西,我并不感到惊讶。(对我来说,这个改变是清理我的代码,并使用胶水
而不是粘贴:耸耸肩:)w.r.t.第二个问题,你只能在“计划”中添加缺少的对象,使用,globals=structure(TRUE,add=“a”)
众所周知,未来
并不总是能很好地处理数据。表
我喜欢这个问题,不幸的是还没有答案。我也看到过同样的事情。有时我的全球人出现,有时他们不。。。我对这个问题的答案很感兴趣。第二个问题,你可以在“计划”中只添加缺少的对象,使用,globals=structure(TRUE,add=“a”)
,并且众所周知未来的并不总是能很好地处理数据。table
我喜欢这个问题,不幸的是,现在还没有答案。我也看到过同样的事情。有时我的全球人出现,有时他们不。。。我对这个问题的答案很感兴趣。