举一个例子library(Rcpp)
sourceCpp("test.cpp")
xp <- funx()
xp
<pointer: 0x9618cc0>
函数:
TEST.CPP
library(parallel)
out <- mclapply(1:2, function(x) funx())
out
[[1]]
<pointer: (nil)>
[[2]]
<pointer: (nil)>
[R
XPtr
但如果我尝试并行化这个,我会得到空指针
test
是否有可能实现这种功能?
修改
值得注意的是,尽管有一个重复的问题,似乎没有真正的解决方案来解决这个问题。根据我现在的理解,snow
不能是多线程的。所以基本上这不能在R中完成。
例如,当我将函数放在包library(test)
library(snow)
fun <- function(){
library(test)
test:::funx()
}
cl <- makeCluster(2, type = "SOCK")
clusterExport(cl, 'fun')
clusterCall(cl, fun)
[[1]]
<pointer: (nil)>
[[2]]
<pointer: (nil)>
中并尝试使用 //Output data of each row
while($row = $result->fetch_assoc()){
$output = $output . "<option value=\"\">".$row['patient_name']."</option>";
}
时,它仍然无法返回指针。
//Output data of each row
while($row = $result->fetch_assoc()){
$output = $output . "<option value='".$row['patient_name']."'>".$row['patient_name']."</option>";
}
答案 0 :(得分:1)
关于
是否有可能实现这种功能?
我会说答案是一个相当坚定的“nope&#39;正如First Rule of Fight Club适用于此:您只是希望它能够工作,不能并行化基础R实例。像RcppParallel这样的软件包非常小心关于使用非R数据结构进行多线程工作。
我可能过于悲观但我会把收集级别放在&#39;更深层次,只将其汇总结果返回给R。