r - 全局变量和并行处理
问题描述
我正在尝试partitions
使用pblapply
and处理大型分区数据帧parallel
。但是,每个线程似乎都无法访问全局变量。
a
是另一个大型数据框。我怎样才能a
访问该功能?
请参阅下面的虚拟脚本:
library(pbapply)
library(parallel)
partitions <- list(c(1:5),
c(6:10),
c(11:15))
a <- 1
myfn <- function(x, add = a) {
out = x + a
return(out)
}
pblapply(nums, myfn,
cl = makeCluster(detectCores() - 1))
这会引发错误:
Error in checkForRemoteErrors(val) :
3 nodes produced errors; first error: object 'a' not found
解决方案
您应该显式传递add
参数:
cl <- makeCluster(detectCores() - 1)
pblapply(
partitions,
function(x, add) x + add,
cl = cl,
add = a
)
stopCluster(cl)
推荐阅读
- python - GIS 编程 - 不明白为什么会发生 TypeError
- vue.js - 单击其中的按钮时阻止路由器链接:VUEJS
- php - 在 PHP 中绘制垂直图表
- javascript - 如何使代码更高效、更短?
- c - 如何创建 Mosquitto MQTT 自定义插件?
- c - 使用 C 中的链表进行稀疏矩阵乘法
- mysql - Sequelize 更新 HasMany 关系
- flutter - 获取 ListWheelScrollView 中子项的值
- c - LibOpenCM3 1-Wire over UART DMA STM32F1
- android - 尝试使用 Firebase 文档 ID 处理 AndroidStudio 中特定字段的值