Как использовать LINQ для выбора всех потомков составного объекта

Я использую функцию 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.
5
задан otsaw 10 January 2012 в 12:36
поделиться