0

我正在并行运行一个大循环来进行回归。循环工作正常,一切都很好,但我突然观察到一种非常奇怪的行为。一些迭代没有达到回归本身的步骤。这是我正在尝试的一个简单片段:

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) 再次运行代码。令我惊讶的是,代码运行成功。我想知道这里发生了什么。以前有没有其他人遇到过类似的情况?非常感谢任何帮助。

4

0 回答 0