pc手机一体网站/荆门网络推广

pc手机一体网站,荆门网络推广,wordpress设置https,网站建设的基本要求R的多进程使用与改进在R中需要使用多进程时,常见方案是使用foreach和doParallel的组合。foreachforeach包中最重要的是foreach函数,该函数创建一个foreach对象,随后串行或并行的执行表达式。library(foreach)?foreachout:foreach( ..., .c…

R的多进程使用与改进

在R中需要使用多进程时,常见方案是使用foreachdoParallel的组合。

foreach

foreach包中最重要的是foreach函数,该函数创建一个foreach对象,随后串行或并行的执行表达式。

library(foreach)?foreach

out:

foreach(  ...,  .combine,  .init,  .final = NULL,  .inorder = TRUE,  .multicombine = FALSE,  .maxcombine = if (.multicombine) 100 else 2,  .errorhandling = c("stop", "remove", "pass"),  .packages = NULL,  .export = NULL,  .noexport = NULL,  .verbose = FALSE)e1 %:% e2when(cond)obj %do% exobj %dopar% extimes(n)

foreach函数在创建时常用的几个参数为:

...: 表达式中使用的变量。

.packages: 表达式依赖的包,字符向量。

.export: 表达式依赖的变量,字符向量。

.combine: 运算后结果的组合方式,默认为列表,可选 'c' 'cbind' 'rbind' '+' '*'等。

.errorhandling: 当运行中出现错误时的处理方式。

使用时,对象后接%do%为串行,%dopar%为并行。

foreach(i=1:3) %do%    sqrt(i)

out:

[[1]][1] 1[[2]][1] 1.414214[[3]][1] 1.732051

当使用%do%执行时,程序将会自动忽略.packages.export变量。

如果需要使用多进程,不只需要更换成%dopar%,你还需要注册集群,执行,结束集群。

library(doParallel)cl = makeCluster(4)  #注册4个进程的集群registerDoParallel(cl)foreach(i=1:3) %dopar% sqrt(i)stopCluster(cl) # 记得结束集群

包装

对多进程进行包装,形成runParallel函数。

library(foreach)library(doParallel)runParallel = function(FUN,PARAMS,packages = NULL,export = NULL){    cl = makeCluster(4)  registerDoParallel(cl)  N = length(PARAMS)  R = foreach(    i = 1:N,    .packages = packages,    .export = export,    .errorhandling = 'stop'  ) %dopar%    {      r = do.call(FUN, PARAMS[[i]])      r    }   stopCluster(cl)  R}

程序中的do.call能够使用提供的参数运行FUN函数。

runParallel函数传入FUN与并行参数的列表集合PARAMS,就可以使用FUN对每个值进行处理,然后返回全部值。

问题

在实际使用中遇到这样一个问题,在这里把问题稍微简化一下。

有两个文件,do_some_thing.Rdo_some_other_thing.R,里面各自编写了一个函数。

do_some_thing.R

do_some_thing = function(x){  do_some_other_thing(x**2)}

do_some_other_thing.R

do_some_other_thing = function(x){  x / 2}

很明显,do_some_thing.R中引用了do_some_other_thing.R中的函数。

现在我source这两个文件并暴露这两个函数,编写一个函数调用do_some_thing

some_thing = new.env()source('do_some_thing.R',local = some_thing)some_other_thing = new.env()source('do_some_other_thing.R',local = some_other_thing)attach(some_thing)attach(some_other_thing)fun = function(x){do_some_thing(x+1)}

然后进行多进程调用。

params = lapply(1:10, list)runParallel(fun,params)

得到错误。

Error in { : task 1 failed - "没有"do_some_thing"这个函数"

找不到do_some_thing函数,然而当我们加上所有可能的.export变量后。

runParallel(fun,params,export=c('do_some_thing','do_some_other_thing','some_thing','some_other_thing'))

仍然失败。

 Error in { : task 1 failed - "没有"do_some_other_thing"这个函数" 

有趣的是找不到的函数变成了do_some_other_thing,然而我明明export这个变量了啊。

在搜索中,回答普遍认为doParallel存在设计缺陷,它不能顺利的找到函数内调用的其他自定义函数。

在不停的搜索过后,我终于找到了一个解决方案,使用doFuture[1]

doFuture包会自动解决这类依赖问题,无需提供.packages.export参数,同时无需手动结束集群。

一个更改后的版本是这样的。

runParallel = function(FUN,PARAMS){    registerDoFuture()  plan(multisession, workers = 4)   #在这里指定进程数  N = length(PARAMS)  R = foreach(    i = 1:N,    .errorhandling = 'stop'  ) %dopar%    {      r = do.call(FUN, PARAMS[[i]])      r    }   R}
runParallel(fun,params)

out:

[[1]][1] 2[[2]][1] 4.5······

成功。

十分推荐doFuture包!

我是 SSSimon Yang,关注我,用code解读世界

957a4fc30647cb62c86a8c72e93b6b5e.png

References

[1] doFuture包: https://github.com/HenrikBengtsson/doFuture

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html让图片移动到一定位置_百度移动搜索优化指南2.0

百度移动搜索优化指南 2.0前期准备工作【域名】与 PC 网站一样,域名是用户对一个网站的第一印象。一个好的移动域名,不仅容易记忆、易于输入,还能方便用户向其他人推荐。域名应尽量简短易懂,越短的域名记忆成本越低,越…

32位mysql安装包_关于Mysql的安装

在安装之前,为保证能够安装成功,请您尝试以下操作:1、卸载原有mysql;2、搜索C:盘中是否有残余的mysql文件,主要是log文件,全部删除;3、为保证能够正常连接服务器,尽量关闭电脑防火墙&#xff1b…

山东初二计算机会考,2017山东莱芜初二会考科目时间安排:6月14日

考试科目初中学业考试科目、分值和考试时长分别为:语文、数学、英语三科满分均为120分,考试时长均为120分钟,均按原始得分计入总分;思想品德、化学、历史、地理、生物满分均为100分,考试时长均为90分钟,均按考试分数50…

安装 ubuntu18_Ubuntu18.04安装docker及nvidia docker

Ubuntu18.04安装docker及nvidia docker 2之前的时候记得安装完docker之后还需要安装单独的nvidia docker 2,现在的话只需要安装nvidia container toolkit即可1、docker安装官网上又详细的介绍Install Docker Engine on Ubuntu​docs.docker.com或者sudo apt-get upd…

google账号解除游戏绑定_成长守护平台解除实名认证 公众号解绑操作流程

微信成长守护平台是一款培养孩子健康游戏习惯的游戏管控工具,那么微信成长守护平台怎么解除王者荣耀防沉迷呢?接下来小编就给大家带来了解除实名认证方法介绍,一起来看看吧!先简单了解一下游戏成长守护平台,它的运作方…

混凝土地坪机器人_地面整平机器人:精准又高效,轻松摆“平”混凝土

随着国内经济不断发展,工业厂房、大型广场、体育场、停车场等大面积场地的建设需求越来越多。这类场地大多使用混凝土现场浇筑地基,然后再覆盖地砖或地坪漆,因此对基础层的平整度提出了很高的要求。传统的混凝土地坪施工方法是人工找平&#…

大学计算机成绩统计表怎么做,wps怎么制作成绩表 wps设计成绩统计表的步骤方法...

当我们使用wps统计数据时,如果我们需要制作一个统计成绩的表格,可是怎么制作成绩表吗?其实方法非常的简单,下面教程之家网为大家分享wps设计成绩统计表的步骤方法,不会制作的朋友可以参考下面的步骤方法自己制作即可。wps怎么制作…

chackbox的值 php获取_最详细最全的PHP面试题(附答案)

这篇文章介绍的内容是关于最全最详细的PHP面试题(带有答案),有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下相关推荐:程序猿的生活:面试12家公司,收获9个offer,2020年PHP 面试问题…

python适合安装什么开发环境_python开发环境安装

1、首先安装python-3.4.2.msi,此为python主程序,双击安装,根据自身的情况做选择,也可以使用默认设置,一路next也没什么问题。 2、设置环境变量>编辑Path,在最后加上你的python安装路径。我的安装路径是&…

服务器iis的作用,IIS是什么 IIS服务组件有什么作用

在网上或者一些技术社区我们经常会遇到一些讨论IIS问题文章。那么究竟IIS是什么?有什么用呢?不少电脑爱好者对IIS都充满兴趣,以下脚本之家小编为大家简单介绍下。IIS是什么?IIS是Internet Information Services英文全称的缩写,是…

服务器ssr进程启动怎么运行,要SSR? NUXT项目从初始化到部署服务器流程全记录

首先,简单介绍一下, nuxt.js 是什么Nuxt.js 是一个 Vue.js的SSR通用框架,最常用的就是用来作SSR(服务器端渲染)。首先说下 SSR,最近很热的词,意为 Server Side Rendering(服务端渲染),目的是为了解决单页面应用的 SEO 优化 的问题…

4修改初始值_Java基础语法 --4(连载)

第一部分 : IDEA开发工具参见 :IEDA的安装请参考文件夹PPT中的 04_IDEA.ppt1.数组1.1 数组介绍​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。 1.2 数组的定义格式1.2.1 第一种格式​ 数据类型[] 数组名​ 示例:int[] ar…

python字典常用方法_Python 字典的常见操作

字典 字典的增删改查 字典的创建方式: #创建字典类型 info {name:李白,age:25,sex:男} msg{user01:Longzeluola,user02:xiaozemaliya,user03:cangjingkong} 字典存储数据的时候,采取的是key:value的形式,是一组无序的存储。在需要的时候通过k…

华为薪资等级结构表_华为21级程序员月薪曝光:月薪27w,什么概念!程序员中的战斗机...

最近,一名 HR 在网上发布了一个内容。该公司表示在招聘简历中找到了华为高管的简历,简历的级别为 21 级,月薪为 27 万,这确实令人惊讶。 华为的等级,估计很多人都不清楚。华为的等级从低到高,数字越高,等级越大,一般的应届生进入的是 13 级,正常的发展速度是 3 年升一…

eclipse maven项目 class类部署不到tomcat下_Springboot2.0学习3 项目部署到tomcat

一、说明本文接上一篇内容,在上一篇基础上完成部署到Tomcat的过程本文学习资源来自SpringBoot官网二、 代码修改1. 准备好上节完成的代码2. 把启动类从SpringBootServerletInitializer派生,用来支持WAR部署Application.java修改后如下:packag…

显卡服务器已停止响应,电脑提示显卡驱动已停止响应并且已成功恢复该怎么解决?...

“显卡驱动已停止响应,并且已成功恢复”这种问题就本人来说是因为显卡配置出现问题,比如我使用的3D图形软件MAYA2015对显卡要求比较高,我使用默认配置没有配置正确。所以说,显卡的等级是硬条件,实在不行建议买个外接独…

android int 首位值_Android应用视图的管理者Window

点击上方蓝色文字关注我哦Window在Android是一个窗口的概念,日常开发中我们和它接触的不多,我们更多接触的是View,但是View都是通过Window来呈现的,Window是View的直接管理者。而WindowManager承担者管理Window的责任。窗口类型Wi…

java正则匹配英文句号_Scala 正则表达式 0411

Scala 正则表达式Scala 通过 scala.util.matching 包中的 Regex 类来支持正则表达式。以下实例演示了使用正则表达式查找单词 Scala :import scala.util.matching.Regexobject Test {def main(args: Array[String]) {val pattern "Scala".rval str "Scala is …

撤销前进快捷键_电脑win7系统的快捷键大全

电脑在日常工作中经常需要使用到系统自带的快捷键,这样能够大大提高工作效率,比使用鼠标去点击查找方便省事多了,比如常用的复制(Ctrlc)粘贴(Ctrlv),今天就来给大家讲讲Windows系统的快捷键,可以说是快捷键大全啦。一、…

jedis依赖_SpringBoot整合Jedis实现redis缓存

我是一个java开发者,我的文章,没有华丽的言辞,没有666的版式,这些都是我自己工作中用到的解决方案,很多都是直接粘贴的源码,在这里与君分享。如果喜欢这里文章可以关注我,我回继续发的&#xff…