R语言多任务处理与并行运算包——foreach

2020-06-16 00:00:00 函数 语言 执行 爬虫 进程

相信大部分R语言初学者,在刚开始入门之处,都曾被告诫在处理多重复任务时,尽量不要使用显式的for循环,而要尽可能的使用R语言内置的apply组函数,这样可以极大地提高代码运行效率。

但是实际上除了内的apply组函数之外,你还有另外一个更好地选择,就是利用一些支持并行运算的扩展包,来发挥本地计算机的多和计算优势。

本篇要讲解的包是foreach包,这是一个支持在R语言中调用多进程功能的第三方包,之前在对比显式循环、矢量化函数以及多进程在数据抓取的效率一文中,曾经演示过具体的代码。

library("foreach")
library("doParallel")

foreach包执行任务的核心理念与传统的apply组函数基本一致,都是与split – apply – combine一致的流程,不过foreach比传统apply组函数的优越之处在于,它可以通过调用操作系统的多核运行性能来执行并行任务,这样特别是对于I/O密集型任务而言,可以大大节省代码执行效率。

foreach(...,            #待输入的参数
       .combine,        #结果返回后执行的数据合并操作(c代表合并为向量,list代表合并为列表,rbind代表合并为数据框)
       .packages=NULL,  #在多进程共享的程序包(仅对于非系统安装包必备)
       .export=NULL,    #未在当前环境中定义的数据对象
       .verbose=FALSE   #是否打印运行信息
       )
以上函数中,第1个参数是必备参数,即必须有输入参数,结果默认返回list。

相关文章