5

Rのsnowパッケージを使用して、複数のコアでpythonスクリプトを呼び出しています。進行状況をコンソールに出力したいのです。cat()message()またはprint()関数内で使用しても出力が得られません。これにより、関数の進行状況を追跡することが難しくなります。

clusterApply または clusterMap 関数内でコマンド ラインに出力を出力することは可能ですか?


これは私の現在のスクリプトです:

library(snow)
library(rlecuyer)

# Files to process
filenames=1:10

# Process function
processfunc=function(filename,filenames){
  len_names=length(filenames) #Length of filenames
  index = match(filename, filenames) #Index of current file
  cat(paste('Processing input files:',format(round(index/len_names*100,2),nsmall=2),'% At:',filename)) # print progress
  # system(paste('python','D:/pythonscript.py',filename))
}

corenr=7
cl = makeCluster(rep('localhost', corenr), 'SOCK')
clusterExport(cl, list("processfunc"))
clusterEvalQ(cl, library(stringr)) 
clusterSetupRNG(cl)
clusterMap(cl,function(x,filenames) processfunc(x,filenames),filenames,MoreArgs = list(filenames=filenames))
stopCluster(cl)
4

1 に答える 1