使用R语言的parallel包调用多个线程加快数据处理进度

R语言里面做并行计算的包很多,如下所示:

install.packages(c(
  'foreach',
  'iterators',
  'doMC',
  'doParallel',
  'doSNOW'
))

有意思的是我仍然是选择老牌r包,parallel;

使用方法非常简单,  就是 makeCluster 函数定义好需要并行计算的线程数量,然后之前的apply家族循环就区别在函数名字前面加上par的签字,比如 lapply就替换成为了 parLapply  函数。

最开始的代码是:

system.time(lapply(1:1000000, function(x){
  sample(1:100,10)
}))

user  system elapsed 
  7.105   0.268   7.380 

lapply就替换成为了 parLapply  函数 之后的代码是;

library(parallel) 
cl <- makeCluster(8)  
system.time(parLapply(cl,1:1000000, function(x){ 
  sample(1:100,10)
})) 

实战举例:是使用ChIPseeker包对十万多个ChIP-seq的bed坐标文件进行注释,就自定义了函数 run_ChIPseeker,然后把全部的bed文件路径名字存储在 fs这个向量,然后就可以使用  parLapply 的模式,使用8个线程进行并行计算啦,代码如下所示:

library(parallel) 
cl <- makeCluster(8)  
source('../function.R')
parLapply(cl,fs,
          function(bedPeaksFile){ 
            source('../function.R')
            run_ChIPseeker(bedPeaksFile,'human')
          }) # lapply的并行版本

stopCluster(cl) # 关闭集群

值得注意的是,8个线程内部都需要定义 run_ChIPseeker 函数哦。

在我的Windows电脑里面,效果如下所示:

Windows电脑的R并行计算

看懂这些代码,需要 有R语言基础哦:

生信基石之R语言

B站的10个小时教学视频务必看完,参考 GitHub 仓库存放的相关学习路线指导资料:https://github.com/jmzeng1314/R_bilibili ,可以参考一些优秀笔记,比如https://mubu.com/doc/2KUiSCfVsg

  • 初级10 个题目:http://www.bio-info-trainee.com/3793.html
  • 中级要求是:http://www.bio-info-trainee.com/3750.html
  • 高级要求是完成20题:http://www.bio-info-trainee.com/3415.html
  • 统计专题 30题:http://www.bio-info-trainee.com/4385.html
  • 可视化专题30题:http://www.bio-info-trainee.com/4387.html
(0)

相关推荐

  • MySQL8.0 InnoDB并行执行

    概述 MySQL经过多年的发展已然成为最流行的数据库,广泛用于互联网行业,并逐步向各个传统行业渗透.之所以流行,一方面是其优秀的高并发事务处理的能力,另一方面也得益于MySQL丰富的生态.MySQL在 ...

  • Python和大数据有什么关联?

    说起大数据.数据分析之类的词,大家都会联想到Python语言,而且Python也是公认非常适合大数据的语言,那么Python和大数据有什么关系呢?我们来看看吧. 从2004年以后,Python的使用率 ...

  • 同步调用和异步调用

    前言:本文没什么创见,只是把有关内容做一个概括,希望能对新手有些用,也欢迎大家补充更正. 操作系统发展到今天已经十分精巧,线程就是其中一个杰作.操作系统把 CPU 处理时间划分成许多短暂时间片,在时间 ...

  • Vlookup中的常见错误

    使用vlookup函数会遇到一些错误.作为一个专业的数据处理人员,那你需要仔细处理这些错误,有得需要修改源数据,有的需要修改条件,有的需要改进处理方案.学习了本课程,你也可以对源数据和数据处理中的问题 ...

  • 用R语言的forestplot包画亚组分析森林图 | Public Library of Bioinformatics

    用R语言的forestplot包画亚组分析森林图 | Public Library of Bioinformatics

  • 使用R语言的cgdsr包获取TCGA数据

    前些天被TCGA的终结新闻刷屏,但是一直比较忙,还没来得及仔细研读,但是笔记本躺着的一些TCGA教程快发霉了,借此契机好好整理一下吧,预计二十篇左右的笔记 --jimmy 第一篇目录 TCGA数据源 ...

  • TCGA的28篇教程- 使用R语言的RTCGA包获取TCGA数据

    前些天被TCGA的终结新闻刷屏,但是一直比较忙,还没来得及仔细研读,但是笔记本躺着的一些TCGA教程快发霉了,借此契机好好整理一下吧,预计二十篇左右的笔记 --jimmy 往期目录如下: 使用R语言的 ...

  • TCGA的28篇教程- 使用R语言的RTCGAToolbox包获取TCGA数据

    前些天被TCGA的终结新闻刷屏,但是一直比较忙,还没来得及仔细研读,但是笔记本躺着的一些TCGA教程快发霉了,借此契机好好整理一下吧,预计28篇教程! --jimmy 往期目录如下: 使用R语言的cg ...

  • R语言data.table包fread读取数据

    R语言处理大规模数据速度不算快,通过安装其他包比如data.table可以提升读取处理速度. 案例,分别用read.csv和data.table包的fread函数读取一个1.67万行.230列的表格数 ...

  • 练习R语言:bruceR包Freq()函数频率百分比统计

    ‍‍ 对于已经习惯了SPSS输出规范统计表格的人士来说,R输出的文本结果怎么看也不入眼. 我想统计一下不同学历水平被试的样本数和占比.用Freq()函数. Freq(bankloan$教育) 频数结果 ...

  • 练习R语言:blandr包实现Bland-Altman一致性评价

    ‍‍ SPSS不能直接实现Bland-Altman一致性评价,医学的MedCalc是目前最方便的做Bland-Altman的工具. 当然,R必然也是可以的,如果你不那么恐惧语法代码的话(只需要写一点点 ...

  • 这十个R语言包做出医学统计图,CNS都赞不绝口!

    解螺旋公众号·陪伴你科研的第2561天 承"包"你的R语言 R语言,之所以能成为统计学的"当红炸子鸡",因为它内置了海量统计函数,使用者可以利用其对数据进行快速 ...

  • R语言meta分析(1)meta包

    介绍从广义上讲,meta分析是指将几项研究结果结合起来的统计分析.这一术语是由统计学家Gene V Glass在1976年向美国教育研究协会发表演讲中创造的.从那时起,meta分析不仅成为医学研究的重 ...