Я использую функцию mclapply
в многоядерном пакете
для параллельной обработки. Кажется, что все запущенные дочерние процессы производят одинаковые имена для временных файлов, заданные функцией tempfile
. т.е. если у меня четыре процессора,
library(multicore)
mclapply(1:4, function(x) tempfile())
даст четыре точно таких же имени файла. Очевидно, мне нужно, чтобы временные файлы были разными, чтобы дочерние процессы не перезаписывали файлы друг друга. При косвенном использовании временного файла
, то есть при вызове некоторой функции, вызывающей временный файл
, я не могу контролировать имя файла.
Есть ли способ обойти это? Есть ли у других пакетов параллельной обработки для R (например, foreach
) такая же проблема?
Обновление : это больше не проблема, начиная с R 2.14.1.
CHANGES IN R VERSION 2.14.0 patched:
[...]
o tempfile() on a Unix-alike now takes the process ID into account.
This is needed with multicore (and as part of parallel) because
the parent and all the children share a session temporary
directory, and they can share the C random number stream used to
produce the uniaue part. Further, two children can call
tempfile() simultaneously.