Как реализовать асинхронную загрузку данных?

avatar
Михаил Табаков
1 июля 2021 в 17:08
30
0
0

Я загружаю набор данных с помощью REST API с биржи binance и из библиотеки binancer. По мере увеличения количества тикеров продолжительность выполнения кода увеличивается. В качестве примера приведу свой код с расчетом времени выполнения:

library(binancer)
start.time <- Sys.time()
x <- lapply(list('LINKUSDT', 'RUNEUSDT', 'ETCUSDT', 'ATOMUSDT', 'LINKUSDT', 'DOGEUSDT', 'SXPUSDT', 'SRMUSDT', 'OMGUSDT', 'ALGOUSDT', 'BTCUSDT', 'BCHUSDT', 'AAVEUSDT'), function(x){
  data <- binance_depth(symbol = x, limit = 100)
})
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken

Time difference of 3.903079 secs

для меня такое время ожидания загрузки данных велико. Я знаю, что асинхронная обработка может мне помочь. Как мне реализовать асинхронную обработку, тем самым не дожидаясь каждый раз 4 секунды полного выполнения кода?

Источник
MrFlick
1 июля 2021 в 17:14
1

Даже при асинхронной обработке данные не будут доступны раньше. Что вы хотите сделать с этим временем до того, как данные станут доступны? Неясно, как использование асинхронных методов будет иметь значение в этом случае. Возможно, вы вместо этого хотите выполнить какую-то параллельную обработку? Если у вас несколько ядер, вы можете рассмотреть пакет foreach, а не lapply для параллельного запуска. Примеры см. в unc-libraries-data.github.io/R-Open-Labs/Extras/Parallel/….

Ответы (0)