r - 什么是弗尔的“黑魔法”?
问题描述
我使用 R 包furrr
来满足我的大部分并行化需求,并且基本上从来没有将东西从我的全局环境导出到集群的问题。今天我做到了,我不知道为什么。包文档似乎将全局变量发送到集群的过程描述为“黑魔法”。黑魔法是什么?
furrr::future_options
文档说:
全局变量和包 默认情况下,future 包将执行黑魔法来查找您的 furrr 调用所需的全局变量和包,并将这些导出到每个工作人员。但是,它并不总是完美的,可以使用 globals 和 packages 参数进行改进。
作为第二个问题:是否有一种优雅的方式来告诉它使用它的黑魔法,同时导出它错过的东西?或者,选择a)全是黑魔法,还是b)对.options
参数中的所有内容进行硬编码?
解决方案
这并不能完全回答问题,但我认为它为您指明了正确的方向。从这个介绍小插图的“全局”部分:
它在globals包的帮助下做到这一点,该包使用静态代码检查来识别全局变量。如果识别出全局变量,则将其捕获并提供给评估过程。
还有这个“解决方案的常见问题”小插图(@michael 在上面有用地链接)讨论了由 globals 包中的静态代码 eval 产生的一些常见“问题”。
我在这里找到了方法,因为我的future_map()
代码无法找到我在glue()
调用中引用的变量。那个小插曲准确地解释了为什么会发生这种情况。
至于为什么您的代码有时有效,有时无效,很难说。但正如您所看到的,引擎盖下发生了足够的复杂性,如果一些看似无关的更改破坏了某些东西,我并不感到惊讶。(对我来说,这个改变是清理我的代码并使用glue
而不是paste
:shrug :)
推荐阅读
- php - 尝试在 Wordpress 中显示自定义文件夹中的图像时出现错误 404
- python - 根据 2 个条件从数据框中删除行
- selenium - 指定了主机标头或源标头,并且不是 selenium 网格的 localhost
- python - 如何获得正在运行的特定(活动)类
- python - 用于提取十进制数的正则表达式
- linux - 为什么 java 需要基础镜像才能在 docker 上运行
- amazon-web-services - 两个子域映射到一个负载均衡器 DNS - DNS 违规
- python - 通过 HTTP 发送和接收简单的 JSON 消息
- laravel - 运行 2 个 composer.json 文件
- sql - Oracle - 按时间返回记录