R语言的多线程

前言

这是一棵树(网名)同学在群里分享的教程,有关R语言多线程的内容。

关于多线程是什么,可以搜一下,网上很多资料。

R的一个比较大的缺点就是它只能单线程操作,例如如果你的电脑有200个处理器,R一次只能使用一个,这个时候工作效率会降低。为了解决这个问题,可以调用R的多线程。

R中与多线程有关的包是parallel

parallel

paralle包是R中的基础包,不用额外安装,直接调用即可,它的使用如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Load parallel package
library(parallel)
# Check how many threads and cores in your computer
detectCores()
detectCores(logical = F)
# Open multi-threads
# You will see 4 R programs run in your taks managers simultaneously
cl <- makeCluster(3)
# Close cluster
# Run following command will close 4 R program
stopCluster(cl)

detectCores()这个命令用来查看你的电脑有几个核心,如果添加上logical=F参数,则表示查看电脑有几个物理核心,如果是logical=T则表示有几个逻辑核心。

makecluster()函数用于创建几个并行运算。

我们先来看一下运行这个函数之前的任务管理器,如下所示:

只有一个R,现在我们使用并行计算,即运行这个cl <- makeCluster(3)命令,再看一下任务管理器,如下所示:

现在再关闭这个并行计算,即stopCluster(cl),如下所示:

使用并行计算的思路就是:打开并行计算,计算,关闭并行计算。

并行计算的分配

当我们使用makeCluster(4)打开了4个R后,如何分配计算任务呢?