我正在并行运行一个大循环来进行回归。循环工作正常,一切都很好,但我突然观察到一种非常奇怪的行为。有些迭代没有达到回归本身的步骤。这是我正在尝试的简单片段:
cl<-makeCluster(14,outfile="")
registerDoParallel(cl)
sink("MajorSink.log")
NG_PSKU=c(1:234)
NG<-foreach(i=NG_PSKU,.multicombine = T,.errorhandling = "pass",.verbose = T) %dopar%
{
print(i)
conn <- file( sprintf(paste0("output_%d.txt") , Sys.getpid()) , open = "a+" )
sink(conn,append = T)
cat("NG_PSKU:",i,'\n')
#regression on NG_PSKU
}
我在output_%d日志文件中观察到的是print(i)命令已成功运行但cat(“NG_PSKU:”,i,'\ n')从未超过162次迭代。
[1] 162
NG_PSKU: 162
[1] 163
[1] 164
[1] 165
[1] 166
[1] 167
[1] 168
[1] 169
[1] 170
[1] 171
[1] 172
[1] 173
[1] 174
[1] 175
[1] 176
[1] 177
[1] 178
[1] 179
[1] 180
[1] 181
[1] 182
[1] 183
[1] 184
[1] 185
[1] 186
[1] 187
[1] 188
[1] 189
[1] 190
[1] 191
[1] 192
[1] 193
[1] 194
[1] 195
[1] 196
[1] 197
[1] 198
[1] 199
[1] 200
[1] 201
[1] 202
[1] 203
[1] 204
[1] 205
[1] 206
[1] 207
[1] 208
[1] 209
[1] 210
[1] 211
[1] 212
[1] 213
[1] 214
[1] 215
[1] 216
[1] 217
[1] 218
[1] 219
[1] 220
[1] 221
[1] 222
[1] 223
[1] 224
[1] 225
[1] 226
[1] 227
[1] 228
[1] 229
[1] 230
[1] 231
[1] 232
[1] 233
[1] 234
为了进一步研究,我使用更短的NG_PSKU(102-199)再次运行代码。令我惊讶的是,代码运行成功。我想知道这里发生了什么。之前有其他人遇到过类似情况吗?任何帮助都非常感谢。