У меня есть функция внутри цикла внутри функции. Внутренняя функция получает и хранит большой вектор данных в памяти (как глобальная переменная ... Я использую "R", который похож на "S-Plus"). Цикл проходит по длинному списку данных, которые будут получены. Внешняя функция запускает процесс и передает список наборов данных, которые нужно получить.
for (dataset in list_of_datasets) {
for (datachunk in dataset) {
<process datachunk>
<store result? as vector? where?>
}
}
Я запрограммировал внутреннюю функцию для сохранения каждого набора данных перед переходом к следующему, поэтому вся работа внешней функции происходит как побочные эффекты для глобальных переменных ... большое нет-нет. Это лучше или хуже, чем собирать и возвращать гигантский, перегружающий память векторов? Есть ли лучший третий подход?
Изменился бы ответ, если бы я сохранял векторы данных в базе данных, а не в памяти? В идеале я хотел бы иметь возможность завершить работу функции (или вызвать ее сбой из-за тайм-аутов сети) без потери всей информации, обработанной до завершения.