【发布时间】:2018-01-31 00:23:53
【问题描述】:
我正在尝试使用以下代码在并行进程中进行 API 调用以加快 API 调用。 (我知道这不是加速 API 调用的最佳方式,但它确实有效)
只有当我尝试使用并行时它才会失败,否则它会起作用。在 ldply 函数中,我收到以下错误:
do.ply(i) 中的错误: 任务 1 失败 - “'closure' 类型的对象不是子集” 另外:
警告信息:
1: : ... 可能在不正确的上下文中使用:'.fun(piece, ...)'
2: : ... 可能在不正确的上下文中使用:'.fun(piece, ...)'
任何帮助将不胜感激!
One <- 26
cl<-makeCluster(4)
registerDoSNOW(cl)
func.time <- Sys.time()
## API CALL ONE FOR "kline"
url <- "https://api.binance.com"
path <- paste("/api/v1/klines?symbol=",pairs[1],"&interval=1m&limit=1", sep = "")
raw.results <- GET(url = url, path = path)
text_content <- content(raw.results, as = "text", encoding = "UTF-8")
kline <- data.frame(text_content %>% fromJSON())
kline$symbol <- pairs[1]
## API FUNCTION TO BE APPLIED FOR REST
loopfunction <- function(i){
url <- "https://api.binance.com"
path <- paste("/api/v1/klines?symbol=",pairs[i],"&interval=1m&limit=1", sep = "")
raw.results <- GET(url = url, path = path)
text_content <- content(raw.results, as = "text", encoding = "UTF-8")
kline_temp <- data.frame(text_content %>% fromJSON())
kline_temp$symbol <- pairs[i]
kline <- rbind(kline,kline_temp)
return(kline)
}
## DPLY PARALLEL FUNCTION
kline2 <- data.frame(ldply(2:(One - 1), .fun = loopfunction, .parallel = T, .paropts = c("httr", "jsonlite", "dplyr"))) ##"ONE" is a list varriable created earlier
stopCluster(cl)
func.end.time <- Sys.time()
func.tot.time
【问题讨论】:
标签: r parallel-processing plyr parallel.foreach httr