gpt4 book ai didi

r - 如何并行运行多个独立且不相关的函数而无需修改更大的代码?

转载 作者:行者123 更新时间:2023-12-03 21:27:37 25 4
gpt4 key购买 nike

我一直在互联网上搜索,试图了解并行处理。

他们似乎都假设我有某种循环功能在运行,例如数据集的每第 N 行在 N 个核心之间划分并随后合并,我指向许多并行化 apply()职能。

(警告,下面丑陋的代码)

我的情况是我已经在表格上

tempJob <- myFunction(filepath, string.arg1, string.arg2)

其中路径是文件位置,字符串参数是对数据进行排序的各种方式。

我目前的工作流程只是积累了很多
tempjob1 <- myFunction(args)
tempjob2 <- myFunction(other args)
...
tempjobN <- myFunction(some other args here)

# Make a list of all temporary outputs in the global environment
temp.list <- lapply(ls(pattern = "temp"), get)

# Stack them all
df <- rbindlist(temp.list)

# Remove all variables from workspace matching "temp"
rm(list=ls(pattern="temp"))

这些作业是完全独立的,原则上可以在 8 个独立的 R 实例中运行(尽管我猜这会很麻烦)。我如何将前 8 个作业分成 8 个内核,每当一个内核完成其工作并将处理过的数据集返回到全局环境时,它就会简单地执行下一个作业。

最佳答案

future包(我是作者)您可以通过对代码稍作修改来实现您想要的 - 使用“ future ”分配%<-%而不是常规分配 <-对于要异步运行的代码。

library("future")
plan(multiprocess)

tempjob1 %<-% myFunction(args)
tempjob2 %<-% myFunction(other args)
...
tempjobN %<-% myFunction(some other args here)

temp.list <- lapply(ls(pattern = "temp"), get)

关于r - 如何并行运行多个独立且不相关的函数而无需修改更大的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44005300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com