Rcpp并行化返回XPtr的函数?

时间:2016-05-11 15:45:11

标签: r rcpp

举一个例子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>";
    }

1 个答案:

答案 0 :(得分:1)

关于

  

是否有可能实现这种功能?

我会说答案是一个相当坚定的“nope&#39;正如First Rule of Fight Club适用于此:您只是希望它能够工作,不能并行化基础R实例。像RcppParallel这样的软件包非常小心关于使用非R数据结构进行多线程工作。

我可能过于悲观但我会把收集级别放在&#39;更深层次,只将其汇总结果返回给R。