У меня есть 2 машины с идентичными версиями Ubuntu (16.04), R (3.4.4) и будущего пакета (1.10.0).Я запускаю приведенный ниже код, который реализует асинхронное программирование
tic()
library(future)
plan(multisession)
mehAsync = function(){
future::future({
Sys.sleep(5)
return('meh')
})
}
out = mehAsync()
what = then(out,function(value){(value)})
toc()
Ожидаемое поведение заключается в том, что выполнение завершится почти мгновенно, оставляя то, что должно быть ожидающим обещанием.В одной машине это происходит, выполнение происходит мгновенно.Однако на другом компьютере, который у меня есть, выполнение ожидает выполнения функции mehAsync и завершается через 5 секунд.
Как указано выше, обе машины практически идентичны.Основное различие между ними заключается в том, что медленнее одноядерный компьютер.Однако, насколько я понимаю, план multisession
не должен требовать нескольких ядер.Достаточно ресурсов, чтобы открыть новый сеанс R, который есть у машины.
Конкретные вопросы здесь:
- Правильно ли мое понимание ожидаемого поведения, и это нормально для одного человека?основной компьютер?
- Какие другие факторы, которые я не принимаю во внимание, могут повлиять на это поведение?
- Как я могу отладить эту проблему, поскольку нет сообщений об ошибках / предупреждений и не может бытьреплицируется мной и другими людьми на независимых машинах?
Примечание: этот вопрос возник при попытке исследовать этот другой вопрос