问题标签 [furrr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
363 浏览

r - 如何在 R/future/furrr 中对并行 API 请求进行速率限制

我必须从 Web API (NCBI entrez) 中检索一个大型数据集,该数据集将我限制为每秒一定数量的请求,例如 10 个(示例代码将限制您在没有 API 密钥的情况下为三个)。我正在使用 furrr 的 future_* 函数来并行化请求以尽快获取它们,如下所示:

显然,对于nrequest > 10(或任何限制)的情况,我们将立即违反速率限制。

我看到了两个看似显而易见的简单解决方案,这两个似乎都有效。一种是在发出请求之前引入一个随机的短延迟,如下所示:

第二种是将并发请求的数量限制在速率限制内,通过plan(multiprocess,workers=<max_concurrent_requests>)或使用将信号量设置为速率限制的semaphore包,如下所示:

但是,我真正想做的是限制请求率而不是并发请求的数量。Quentin Pradet有一篇很棒的文章,介绍了如何在 python 中使用异步 io http 请求来做到这一点。我试图将其调整为 R,但遇到了这样的问题:future_* 函数中跨线程/进程共享的任何变量都被复制而不是实际共享,因此修改(即使受信号量锁保护)不会在之间共享线程/进程,因此无法实现我们所依赖的计数器存储桶以使该方法起作用!

有没有一种巧妙的方法来限制并行请求的速率,而不必限制同时请求的数量?还是我想太多了,应该坚持限制数量?

0 投票
0 回答
49 浏览

r - 并行运行 R 函数 / 使用 furr / 语法

我在 igraph 对象 (gr_muc) 上有这个调用,它改变了顶点的权重。

是否可以使用furrr或其他方式在多个内核上运行这些调用?这样的电话会是什么样子?先感谢您!BR。

0 投票
2 回答
683 浏览

r - R:异步并行 lapply

到目前为止,我发现lapply在 R 中使用并行的最简单方法是通过以下示例代码:

这有一个非常有用的特性,即为结果提供进度条,并且在不需要并行计算时很容易重用相同的代码,通过设置cl = NULL.

但是,我注意到的一个问题是pblapply正在批量循环列表。例如,如果一个工人在某项任务上卡了很长时间,剩下的工人将等待它完成,然后再开始新的一批工作。对于某些任务,这会为工作流程增加大量不必要的时间。

我的问题: 是否有任何类似的并行框架可以让工作人员独立运行?进度条和重用代码的能力cl=NULL将是一大优势。

也许可以修改现有代码pbapply以添加此选项/功能?

0 投票
1 回答
336 浏览

r - 使用省略号 (...) 将参数传递给 furrr::future_map

我正在尝试furrr::future_pmap在 R 中使用来替换purrr::pmap另一个函数中的函数调用。

目前我已经设置了它,所以pmap使用省略号传递其他参数...但是当我尝试使用它执行此操作时,future_pmap我得到未使用的参数错误(参见下面的示例)。我从这里的评论中知道,将省略号参数传递给映射函数 purrr 包、R和其他先前的研究,为了使省略号与 pmap 一起使用,您需要使用function(x,y,z) blah(x,y,z,...)而不是,~blah(..1,..2,..3)但相同的方法似乎不适用于future_map. 做这项工作还有其他秘诀吗?

我创建了一个非常简单的表示,显然我的真实函数在 future_pmap 中运行更有意义

0 投票
1 回答
179 浏览

r - 尝试调整多会话计划时,R furrr 计划返回错误?

我正在尝试设置我需要的计划,但出现以下错误:

错误是:

或者:

请告知如何设置/ 计划的workers,lazygc其他参数。multisessionmulticore

我的 R 版本是:

0 投票
3 回答
264 浏览

r - 通过 furrr 使用整洁的评估

我想使用furrr包而不是purrr包使以下函数并行运行。

但是,当我将其转换为furrr等价物时,会出现错误。

我认为原因是该future包会查找要导出给工作人员的所有必要变量。在这种情况下,它正在寻找列名“a”作为全局变量,但找不到它,因此出现错误。

当我只是将变量名插入到调用中时,它可以工作,但是现在该函数不再适用于任何变量名:

到目前为止,我尝试了几件事,包括为 .future_options 提供名称,但似乎都没有。有什么办法可以使这项工作?我的实际功能要复杂得多,但我认为主体是相同的。如果有人可以提供帮助,那就太好了!

0 投票
2 回答
75 浏览

r - R furrr:在运行计算之前对每个未来进程的 API 进行身份验证

我正在使用furrrR 运行并行计算。计算需要访问 Web API 并且需要进行身份验证。如果我运行并行进程,则每个进程都需要进行身份验证。在下面,我有 6 个进程。所以我需要先对这六个进程进行身份验证,然后再运行计算。我不知道如何使用furrr. 所以我最终在每次运行中都进行了身份验证,这确实是低效的。

下面是一个用于说明目的的简单示例。它不起作用,因为我无法共享该api.configure功能,但希望您能理解。

谢谢

0 投票
0 回答
115 浏览

r - r - 使用 foreach 将多个文件下载到单独的子文件夹中 - setwd 出错

我有以下代码将链接下载到相应的文件夹>子文件夹中。这段代码虽然很慢,但效果很好。我有几百个 .zip 文件,我正在尝试下载以便对其进行处理。

在国家数据的文件夹和子文件夹结构中,一些国家可能有 1 个子文件夹,而另一些国家可能有多个子文件夹。

为了模仿现有条件,我还在下面附上了一些虚拟代码:

我搜索了加快下载链接过程的方法,我遇到了这个答案:如何配置未来以下载更多文件?

我已经修改了该代码以适应我的独特情况;但是,下面的代码不起作用。我收到一条错误消息。

有没有办法加速有效的代码,以便保留相同的功能?

谢谢你。

更新

我没有尝试使用furrr,而是使用foreach. 修改后的代码如下:

正如我以前(并且仍在收到)foreach循环中的此错误消息一样:

我搜索了有关 setwd 和foreach循环的帮助。我遇到了以下答案:

如何在 R 中的异步期货中更改工作目录

我使用了该答案中的几行,但我仍然收到相同的错误消息。

在工作目录之间导航的最佳方法是什么,以便foreach构造与带有 setwd() 错误消息的普通 for 循环一样工作?

谢谢你。

0 投票
2 回答
210 浏览

r - 两个数据库的模糊匹配和精确匹配

我有两个数据库。第一个有大约 70k 行和 3 列。第二个有 790k 行 2 列。两个数据库都有一个共同的变量grantee_name。我想基于此将第一个数据库的每一行与第二个数据库的一个或多个行匹配grantee_name。请注意,这merge不起作用,因为grantee_name不完全匹配。有不同的拼写等。所以,我正在使用该fuzzyjoin软件包并尝试以下操作:

上面的例子很清楚,可以提供一些好的匹配和一些不太好的匹配。请注意,例如,10 THOUSAND WINDOWS将匹配最好,10 THOUSAND MUSKETEERS INC但这并不意味着它是一个很好的匹配。数据中的某处会有更好的匹配filings(上面未显示)。在这个阶段这无关紧要。

所以,我尝试了以下方法:

对 R 来说是全新的。这会导致错误:( cannot allocate vector of size 375GB当然是大数据库)。forfuzzy始终有效的 100 行样本。所以,我想一次迭代一个 100 行的列表。

我尝试了以下方法:

我也试过上面用mclapply而不是lapply. 即使我尝试了设置 3 个 CPU 的高性能集群,每个 CPU 有 480G 内存并mclapply与选项一起使用,也会发生同样的错误mc.cores=3。也许foreach命令可以提供帮助,但我不知道如何实现它。

有人建议我使用purrrandrepurrrsive包,所以我尝试以下方法:

by=grantee_name在声明中出现新手错误之后,这似乎有效。但是,它需要很长时间,我不确定它是否会起作用。forfuzzy一个包含 100 行的示例列表n=10(因此 10 个列表,每个列表 10 行)已经运行了 50 分钟,但仍然没有结果。

0 投票
2 回答
222 浏览

r - 如何使此代码并行运行?循环

我正在尝试将这个简单的 for 循环作为并行进程运行,因为它需要大量的计算能力。有什么想法吗?