• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

R语言多线程运算(解决R循环慢的问题)【转载】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

已经大半年没有更新博客了。。最近都跑去写分析报告半年没有R

这次记录下关于R循环(百万级以上)死慢死慢的问题,这个问题去年就碰到过,当时也尝试过多线程,but failed......昨天试了下,终于跑通了,而且过程还挺顺利

step1

先查下自己电脑几核的,n核貌似应该选跑n个线程,线程不是越多越好,线程个数和任务运行时间是条开口向下的抛物线,最高点预计在电脑的核数上。detectCores( )检查当前电脑可用核数  我的是4所以step2选的是4

library(parallel)
cl.cores <- detectCores()

step 2

多线程计算

setwd("C:\\Users\\siyuanmao\\Documents\\imdada\\0-渠道投放和新人券联动模型\\测算")
options(scipen=3)  ##取消科学计数法
channel_ad_ios_data<-seq(0,50000,5000)
channel_ad_android_data<-seq(0,100000,10000)

library(parallel)

func <- function(n){#n=1
  result_data<-read.csv("发券方案.csv",stringsAsFactors=FALSE)
  total_coupon_solution_data<-read.csv("结果表框架.csv",stringsAsFactors=FALSE)
  coupon_solution_data<-subset(result_data,solution== paste('方案',n,sep=""))
 
  for (i in 1:11){#i=3
    coupon_solution_data$channel_ad_cost[3]<-5000*(i-1)
    
    for (j in 1:11){#j=5
      coupon_solution_data$channel_ad_cost[4]<-10000*(j-1)
      solution_mark<-paste('方案',n,i,j,sep="-")
      coupon_solution_data$solution<-solution_mark
      
      total_coupon_solution_data<-rbind(total_coupon_solution_data,coupon_solution_data)
    }
  }
  print(solution_mark)
  return(total_coupon_solution_data)
}

#func(10)
system.time({
x <- 1:7776
cl <- makeCluster(4) # 初始化四核心集群
results <- parLapply(cl,x,func) # lapply的并行版本
res.df <- do.call('rbind',results) # 整合结果
stopCluster(cl) # 关闭集群
})


df=as.data.frame(res.df)

原来非多线程的时候,我预计要跑12个小时以上,电脑发出呼呼~~的响声,查了下Python循环会快点,然后改为python版(已经很久没有用了,连个range都不会写,摸索了大半天才改好,但是速度还是慢==),于是改成多线程,运行25分钟就出结果了~~
---------------------
作者:小酥饼maomao
来源:CSDN
原文:https://blog.csdn.net/u011454283/article/details/77920833
版权声明:本文为博主原创文章,转载请附上博文链接!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言为数据框添加列名或行名发布时间:2022-07-18
下一篇:
《R语言实战》读书笔记-- 第六章 基本图形发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap