gpt4 book ai didi

r - 并行错误 R : Error in serialize(data, node$con) :写入连接时出错

转载 作者:行者123 更新时间:2023-12-01 17:46:47 88 4
gpt4 key购买 nike

我看过有关此主题的其他一些帖子,但似乎没有一个与我遇到的问题完全相同。但这里是:

我正在使用并行运行一个函数

cores <- detectCores()
cl <- makeCluster(8L,outfile="output.txt")
registerDoParallel(cl)
x <- foreach(i = 1:length(y), .combine='list',.packages=c('httr','jsonlite'),
.multicombine=TRUE,.verbose=F,.inorder=F) %dopar% {function(y[i])}

这通常工作正常,但现在抛出错误:

Error in serialize(data, node$con) : error writing to connection

检查 output.txt 文件后,我看到:

starting worker pid=11112 on localhost:11828 at 12:38:32.867
starting worker pid=10468 on localhost:11828 at 12:38:33.389
starting worker pid=4996 on localhost:11828 at 12:38:33.912
starting worker pid=3300 on localhost:11828 at 12:38:34.422
starting worker pid=10808 on localhost:11828 at 12:38:34.937
starting worker pid=5840 on localhost:11828 at 12:38:35.435
starting worker pid=8764 on localhost:11828 at 12:38:35.940
starting worker pid=7384 on localhost:11828 at 12:38:36.448
Error in unserialize(node$con) : embedded nul in string: '\0\0\0\006SYMBOL\0\004\0\t\0\0\0\003')'\0\004\0\t\0\0\0\004expr\0\004\0\t\0\0\0\004expr\0\004\0\t\0\0\0\003','\0\004\0\t\0\0\0\024SYMBOL_FUN'
Calls: <Anonymous> ... doTryCatch -> recvData -> recvData.SOCKnode -
unserialize
Execution halted

此错误是间歇性的。内存充足(32GB),并且内存中没有其他大型 R 对象。并行代码中的函数从云端检索许多小型 json 数据对象并将它们放入 R 对象中 - 因此不存在大型数据文件。我不知道为什么它偶尔会看到嵌入的 nul 并停止。

我也有一个从云端提取 csv 文件的函数遇到类似的问题。到目前为止,这两个函数在 R 3.3.0 和 R 3.4.0 下都运行良好。

我在 Windows 上使用 R 3.4.1 和 RStudio 1.0.143。

这是我的 session 信息

sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United
States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252

attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base

other attached packages:
[1] RJSONIO_1.3-0 RcppBDT_0.2.3 zoo_1.8-0 data.table_1.10.4
doParallel_1.0.10 iterators_1.0.8
[7] RQuantLib_0.4.2 foreach_1.4.3 httr_1.2.1

loaded via a namespace (and not attached):
[1] Rcpp_0.12.12 lattice_0.20-35 codetools_0.2-15 grid_3.4.1
R6_2.2.2 jsonlite_1.5 tools_3.4.1
[8] compiler_3.4.1

更新

现在我收到另一个类似的错误:

Error in unserialize(node$con) : ReadItem: unknown type 100, perhaps written by later version of R

嵌入的 nul 错误似乎已经消失。我还尝试删除 .Rhistory 和 .Rdata,还删除我的包子文件夹并重新加载所有包。至少这个新错误看起来是一致的。我找不到“未知类型100”是什么。

最佳答案

我还注意到多核 session 不会从任务管理器中消失。

从使用切换:stopCluster(cl)stopImplicitCluster()为我工作。根据我的阅读,这应该在使用“一行”时使用 registerDoParallel(cores=x)对比

cl<-makeCluster(x)
registerDoParallel(cl)

我的“直觉”是 Windows 处理集群的方式需要 stopImplicitCluster,但您的体验可能会有所不同。

我本来会发表评论,但这是(提示乐队)我的第一个 STACKOVERFLOW 帖子!!!

关于r - 并行错误 R : Error in serialize(data, node$con) :写入连接时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45380099/

88 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com