] Я выполняю параллельную операцию с использованием кластера SOCK с рабочими процессами на локальной машине. Если я ограничу набор, который я повторяю (в одном тесте с использованием 70 задач вместо 135), то все будет работать нормально. Если я использую полный набор, я получаю ошибку «Ошибка при десериализации (список сокетов [[n]]): ошибка чтения из соединения». [
] [] Я разблокировал порт в брандмауэре Windows (как вход, так и выход) и разрешил полный доступ для Rscript / R. [
][] Это не может быть проблемой тайм-аута, потому что тайм-аут сокета установлен на 365 дней. [
][] Это не проблема для какой-либо конкретной задачи, потому что я могу нормально работать последовательно (также отлично работает параллельно, если я разделю набор данных пополам и сделаю два отдельных параллельных прогона) [
][] Лучшее, что я могу придумать, это то, что через сокеты передается слишком много данных. Кажется, не существует кластерной опции для ограничения данных. [
][] Я не понимаю, как действовать дальше. Кто-нибудь видел эту проблему раньше или может предложить решение? [
] [] Вот код, который я использую для настройки кластера: [
] [cluster = makeCluster( degreeOfParallelism , type = "SOCK" , outfile = "" )
registerDoSNOW( cluster )
]
[][] Редактировать [][
]
Хотя эта проблема характерна для всего набора данных, она также появляется со времени - в срок с сокращенным набором данных. Это может означать, что это не просто проблема ограничения данных. [
][] Edit 2 [][
]
Я копнул немного глубже, и оказалось, что моя функция на самом деле имеет случайный компонент, который делает так, что [] иногда [] задача вызовет ошибку. Если я запускаю задачи последовательно, то в конце операции мне говорят, какая задача не удалась. Если я работаю параллельно, то получаю ошибку «десериализация». Я попытался обернуть код, выполняемый каждой задачей, в вызове tryCatch с помощью error = function (e) {stop (e)}, но это также генерирует ошибку «десериализации». Я запутался, потому что думал, что Snow обрабатывает ошибки, передавая их мастеру? [