2015-05-12 7 views
1

У меня есть две функции: fun1 и fun2. Я хотел бы запустить их параллельно в моем R-скрипте. Когда они завершатся, я хотел бы использовать их вывод в дальнейшей обработке последовательно. Думаю, это означает, что мне нужно дождаться их завершения.Выполнение параллельных операций в R

Я был бы очень признателен за любые советы или указатели.

Thank you.

+1

Просьба привести пример кода и данных, в противном случае мы не сможем помочь. В частности, ознакомьтесь с http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

Посмотрите на http: //cran.r-project. org/web/packages/doParallel/vignettes/getstartedParallel.pdf – konvas

ответ

3

Параллельные пакеты для R в основном предназначены для выполнения той же функции или выражения параллельно с возможными разными данными. Они не разработаны из коробки, чтобы запускать различные функции простым способом.

Было бы неплохо иметь функцию, подобную DAGapply, чтобы вы могли указать Direct Acitlic Graph (какие части зависят от других частей), и все части, которые могли бы выполняться параллельно, были бы тогда, когда исходные части возвращались , то части, чьи зависимости будут заполнены, затем будут отправляться параллельно, но я еще не вижу эту функциональность. Я подумал о том, чтобы написать его сам и увидеть основные части для вызова (но они не экспортируются и могут меняться в любое время), но пока не нашли времени.

Работа, которую вы могли бы использовать сейчас, заключалась бы в том, чтобы написать свою собственную функцию, которая принимает один аргумент, и если этот аргумент равен 1, то он вызывает вашу первую функцию, и если аргумент в 2 вызывает вашу вторую функцию. Эта новая функция затем может быть передана параллельной функции (например, parLapply в параллельном пакете), и она, в свою очередь, будет запускать ваши функции параллельно и ждать завершения обоих.

+0

хорошая информация. будет редактировать. –

+0

Спасибо! Это именно то, что я искал! – user2630162

+1

Спасибо, Грег за подсказку! Это то, что я придумал: 'code' Рез <- parLapply (CLUS, C (1,2), функция (я) { , если (я == 1) { возврата (fun1()) } else { return (fun2()) } }) – user2630162

Смежные вопросы