R furrr:在 运行 计算之前对每个未来进程验证 API
R furrr: authenticate an API on each future process before running the computation
我正在 运行使用 R 中的 furrr
进行并行计算。计算需要访问网络 API 并且需要进行身份验证。如果我运行一个并行进程,每个进程都需要验证。
在下面,我有 6 个进程。所以我需要先对这六个进程进行身份验证,然后 运行 进行计算。我不知道如何使用 furrr
来做到这一点。所以我最终在每个 运行 中都进行了身份验证,这真的很低效。
下面是一个用于说明目的的简单示例。它不起作用,因为我无法共享 api.configure
函数,但希望你明白了。
谢谢
library(tidyverse)
library(furrr)
plan(multiprocess, workers = 6)
testdf = starwars %>%
select(-films, -vehicles, -starships) %>%
future_pmap_dfr(.f = function(...){
api.configure(username = "username", password = "password")
currentrow = tibble(...)
l = tibble(name = currentrow$name, height = currentrow$height)
return(l)
})
尝试打开地图前的连接:
library(tidyverse)
library(furrr)
plan(multiprocess, workers = 6)
future_options(globals = T) # this should be the default
api.configure(username = "username", password = "password")
ls(all=TRUE) #Check if new environment variables are available to save connexion
testdf = starwars %>%
select(-films, -vehicles, -starships) %>%
future_pmap_dfr(.f = function(...){
currentrow = tibble(...)
l = tibble(name = currentrow$name, height = currentrow$height)
return(l)
})
解决这个问题的方法是让 API 的开发者在 API 包中添加变量来测试连接是否打开。这样,如果连接未打开,我将在每个 future
进程上进行一次身份验证,一旦完成,所有后续对该进程的 API 身份验证调用将被 if 子句停止。
我正在 运行使用 R 中的 furrr
进行并行计算。计算需要访问网络 API 并且需要进行身份验证。如果我运行一个并行进程,每个进程都需要验证。
在下面,我有 6 个进程。所以我需要先对这六个进程进行身份验证,然后 运行 进行计算。我不知道如何使用 furrr
来做到这一点。所以我最终在每个 运行 中都进行了身份验证,这真的很低效。
下面是一个用于说明目的的简单示例。它不起作用,因为我无法共享 api.configure
函数,但希望你明白了。
谢谢
library(tidyverse)
library(furrr)
plan(multiprocess, workers = 6)
testdf = starwars %>%
select(-films, -vehicles, -starships) %>%
future_pmap_dfr(.f = function(...){
api.configure(username = "username", password = "password")
currentrow = tibble(...)
l = tibble(name = currentrow$name, height = currentrow$height)
return(l)
})
尝试打开地图前的连接:
library(tidyverse)
library(furrr)
plan(multiprocess, workers = 6)
future_options(globals = T) # this should be the default
api.configure(username = "username", password = "password")
ls(all=TRUE) #Check if new environment variables are available to save connexion
testdf = starwars %>%
select(-films, -vehicles, -starships) %>%
future_pmap_dfr(.f = function(...){
currentrow = tibble(...)
l = tibble(name = currentrow$name, height = currentrow$height)
return(l)
})
解决这个问题的方法是让 API 的开发者在 API 包中添加变量来测试连接是否打开。这样,如果连接未打开,我将在每个 future
进程上进行一次身份验证,一旦完成,所有后续对该进程的 API 身份验证调用将被 if 子句停止。