6212 6

[问答] 请教,R 语言 并行运算怎么写 [推广有奖]

  • 8关注
  • 2粉丝

讲师

33%

还不是VIP/贵宾

-

威望
0
论坛币
310 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
15111 点
帖子
218
精华
0
在线时间
379 小时
注册时间
2012-10-31
最后登录
2020-8-31

楼主
慧(会)幸福 发表于 2015-12-3 10:41:29 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教,R 语言 并行运算怎么写?

比如说 有两个一万次循环 :

for (i in 1:10000){
x=x+i
}

for (i in 1:10000){
x=x+i
}


怎么让这两个循环同时进行? 多谢啦!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:For

沙发
jinkelazzz 发表于 2015-12-3 14:07:47
马克同问

藤椅
cheetahfly 在职认证  发表于 2015-12-3 16:51:50
应该有多种方式,我用比较简单的一种方式(snow包)来实现:
  1. # 先建立一个测试用的函数,为更易观察耗时,循环1千万次。
  2. test <- function() {
  3.       x <- 0
  4.       for (i in 1:10000000) {
  5.           x <- x + i
  6.       }
  7.      return(x)
  8. }
  9. library(snow)
  10. cl <- makeCluster(type = "SOCK", c("localhost", "localhost"))  # 建立两个本地CPU内核的并行
  11. clusterCall(cl, test) # 执行并行计算
  12. # 以下是计算结果,自动封装在一个list中
  13.    [[1]]
  14.    [1] 5e+13

  15.    [[2]]
  16.    [1] 5e+13

  17. system.time({test();test()}) # 测试简单循环两个1千万次的耗时
  18.    user  system elapsed
  19.    6.19    0.03    6.32

  20. system.time(clusterCall(cl, test)) # 测试并行循环的耗时
  21.    user  system elapsed
  22.    0.00    0.00    3.99

  23. stopCluster(cl) # 关闭并行
复制代码


已有 1 人评分论坛币 收起 理由
admin_kefu + 25 热心帮助其他会员

总评分: 论坛币 + 25   查看全部评分

板凳
慧(会)幸福 发表于 2015-12-4 19:18:37
cheetahfly 发表于 2015-12-3 16:51
应该有多种方式,我用比较简单的一种方式(snow包)来实现:
非常感谢

报纸
3212468 发表于 2016-5-10 15:54:34
cheetahfly 发表于 2015-12-3 16:51
应该有多种方式,我用比较简单的一种方式(snow包)来实现:
用交换机连接的多计算机并行怎么实现啊,

地板
dw928762571 发表于 2017-11-14 14:46:57
非常感谢,学习了。。。

7
yo8237233 发表于 2017-11-14 23:25:26
paralell 包   支持数据并行和任务并行  linux兼容很好  windows下可能要引入另外一个包

另外还有foreach 包 也可以并行

这两个包在小数据情况下还没有串行快,要注意你的数据量

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 18:34