R: Из основного сценария вызовите внешние подпрограммы R, чтобы избежать ожидания подпрограммы. - PullRequest
0 голосов
/ 11 мая 2018

Проблема

У меня есть рабочий процесс анализа, при котором участвующие компьютеры выполняют моделирование и последующий анализ нескольких задач параллельно, используя стандартную реализацию doParallel.Компьютеры-участники координируют свои действия, связываясь с удаленным сервером SQL, чтобы зарезервировать задачи для выполнения и помечать их как выполненные.

Компьютеры работают с задержками, поскольку сервер медленно обрабатывает все запросы и транзакции, отправленные на него.Поскольку из-за большого объема трафика существует время ожидания, компьютеры-участники - как они в данный момент запрограммированы - не будут переходить к следующему набору задач, пока все их задачи не будут помечены как завершенные, иногда ожидая часа.

Вопрос / Решение

Я бы предпочел, чтобы подпрограмма обрабатывала сообщения SQL, особенно обновление завершено, чтобы основной цикл анализа не ожидал завершения этих транзакций, прежде чем получитьбольше задач.

Как я могу вызвать сценарий sub R из основного в отдельном сеансе, чтобы основной сценарий не занимался ожиданием завершения подпрограммы?

  • Если я использовал system(cmd = "R PATHTOSCRIPT.R"), будет ли это порождать отдельную Rsession или она будет действовать в пределах той же самой?

  • Я предполагаюоднократный вызов сценария перед циклом анализа, который, возможно, выполняется с заданными интервалами для обновления завершенных задач.

Примечания

Я не могу использоватьsource(), потому что это заставит главный скрипт ждать завершения подпрограммы.

Пакеты

Я использую DBI и odbc для управления транзакциями SQL, с dbExecute() длявыполнять транзакции SQL, включенные в обработку ошибок, для автоматических повторных попыток через rpois(5) секунд.

1 Ответ

0 голосов
/ 11 мая 2018

После некоторого тестирования я решил, что вызов system(command, invisible = F, wait = F) для файла .bat с подпрограммами является лучшим. Запускается отдельный процесс, и открывается окно CMD, чтобы указать пользователю, что он делает.

Файл .bat позволяет пользователям легко перезапустить подпрограмму при случайном закрытии окна CMD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...