R语言 未来工作线程的限制::plan()函数高于可用CPU内核

gz5pxeao  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(201)

我有一个8核的CPU,我试图用它来做并行future_map_chr()。
我的质询如下:我的计算机中的核心数量等于8,因此如何将计划设置为并行化函数:

plan(multisession, workers = 50,gc=T)

我是否误解了worker和core之间的区别?它比workers = detectCores()好吗?
非常感谢

s71maibg

s71maibg1#

Futureverse的作者:
它比workers = detectCores()好吗?
我认为parallelly::availableCores()parallel::detectCores()更好,更安全,例如。https://www.jottr.org/2022/12/05/avoid-detectcores/
使用:

plan(multisession)

与:

plan(multisession, workers = parallelly::availableCores())

然而,Futureverse和plan()中没有任何东西可以阻止您通过手动指定workers来超过限制,例如。

plan(multisession, workers = 50)

所以,是的,这将在后台启动50个并行工作进程,即使你的机器上只有8个CPU核心。
我想我可以在尝试设置超过parallelly::availableCores()的本地工人时添加某种保护。例如,它可能抛出一个信息错误。对于任何希望覆盖它的人,我可以添加一个参数force = TRUE。我创建了https://github.com/HenrikBengtsson/parallelly/issues/107来跟踪这个想法。

相关问题