Jak Mogę "wydrukować" lub " kot` przy użyciu parallel

If I call a function using parSapply then print, message lub cat instrukcje wewnątrz tej funkcji nie wydają się wysyłać do konsoli.

Mój proces trwa bardzo długo, więc potrzebuję jakiegoś sposobu, aby zobaczyć postępy i uzyskać wyniki wyjściowe, jak są one zrobione. Czy są jakieś specjalne polecenia, które pozwoliłyby mi drukować na konsoli z równoległego procesu?

Przykład:

library(parallel)

oneloop = function(x) {
  for(i in 1:50) {
    a = rnorm(100000)
    a = sort(a)
  }
  print(x)
  message(x)
  cat(x)
}

cl <- makeCluster(5)
output = parSapply(cl, 1:10, oneloop)
stopCluster(cl)
Author: Corone, 2013-05-23

2 answers

Używając outfile param in makeCluster Możesz przekierować wyjście do pliku, a następnie sprawdzić ten plik, aby zobaczyć, jak postępuje Twój program.

Co ciekawe na komputerze z Linuksem ustawiając go na "" wyjście na konsolę, ale to mi nie działa na komputerze z Windows. Wyjście pliku działa na obu.

 35
Author: eddi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-23 15:37:01

Używam makeCluster z outfile w systemie Windows z doParallel package w wersji 1.0.8. Jestem w stanie śledzić outfile za pomocą prostego polecenia Powershell powershell Get-Content c:/path/to/log/mylog.txt -wait. Mi pasuje.

 2
Author: Dale Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-29 19:11:02