精华内容
下载资源
问答
  • 前言  因为我学习的需要,要做模拟,需要用到前人写好的函数,然后又需要大量的循环(模拟一百次,每次生成500条曲线,450条... 首先需要将doParallel的包安装带上去,而doParallel的包基于foreach,iterators和par...

    前言

     因为我学习的需要,要做模拟,需要用到前人写好的函数,然后又需要大量的循环(模拟一百次,每次生成500条曲线,450条训练,50条做预测)。每次做个运算要半个小时左右,实在是受不了了之后,找了很多的博客和也下载了cran的帮助文档来看。最后终于一遍遍的试出来了。

    包的安装

     首先需要将doParallel的包安装带上去,而doParallel的包基于foreach,iteratorsparallel,parallel是R语言内置的包,所以要实际安装的包总共有三个。

    正文

      首先还是检测电脑的核心数,既然要搞并行计算,肯定要利用多核心;要检测电脑核心数,就需要用到detecCores()函数,对于Windows系统下的intel I5intel I7处理器,一般要用detecCores(logical = F)来获得实际的物理核心。我用的是学校配备的8700,所以检测出来的就是6个。

    library(doParallel)
    library(foreach)
    cl.cores = detecCores(logical = F)
    cl <- makeCluster(cl.cores)
    registerDoparallel(cl)  # 我调用了所有的核心,也可以(cl-1),少调用一个核心
    

     以上是前期设置,下面是我自己模拟代码的部分展示,其中要注意的是我的ffunopare.knn.gcv函数调用了内存中另外两个函数,分别是semmimetric.pcaquadratic,这个很重要。

    func <- function(ii){
        result.pred <- ffunopare.knn.gcv(a,b,v,5,kind.of.kernel="quadratic",semimetric="pca")
        Response.predicted <- result.pred$Predicted.values
        ase.reg[i] <- round(sum((pi/3)*(1/100)*(abs(Response2-Response.predicted))),8)
        }
      RE<-mean(ase.reg)
      return(RE)
    }
    

    参数解读(参考链接1 )


    • %do%: 严格按照顺序执行任务(所以,也就非并行计算),%dopar%并行执行任务,%do%时候就像sapplylapply%dopar%就是并行启动器

    • .combine:运算之后结果的显示方式,default是list,“c”返回vector, cbind和rbind返回矩阵,"+“和”"可以返回rbind之后的“+”或者“”,帮你把数据整合起来,太良心了!!
      -.init:.combine函数的第一个变量

    • .final:返回最后结果

    • .inorder:TRUE则返回和原始输入相同顺序的结果(对结果的顺序要求严格的时候),FALSE返回没有顺序的结果(可以提高运算效率)。这个参数适合于设定对结果顺序没有需求的情况。

    • .muticombine:设定.combine函数的传递参数,default是FALSE表示其参数是2,TRUE可以设定多个参数

    • .maxcombine:设定.combine的最大参数

    • .errorhandling:如果循环中出现错误,对错误的处理方法

    • .packages:指定在%dopar%运算过程中依赖的package(%do%会忽略这个选项),用于并行一些机器学习算法。

    • .export:在编译函数的时候需要预先加载一些内容进去,类似parallel的clusterExport


    下面就是并行计算的主函数部分,也就是调用foreach的部分。#因为ffunopare.knn.gcv要加载内存中的semimetric.pcaquadratic两个函数,所以要在.export参数中设置一下,有文章说要用list,笔者没有用,不过下面参考链接[1]中会给出。要注意,参数要使用%dopar%而不能使用%do%,后者就不是并行计算了。

    x <- foreach(ii=1:100,.combine = "c",.export = c("semimetric.pca","quadratic"))%dopar% func(ii)
    

     最后要做的就是关闭集群

    stopCluster(cl)
    

    最后奉上结果,如下图,左图为并行计算,右图为非并行计算,也就是使用最基础的for循环的结果。请不要吐槽我的print(time)

    并行计算for循环
    并行计算是27分钟非并行计算是1个多小时

    参考链接

    1. R︱foreach+doParallel并行+联用迭代器优化内存+并行机器学习算法.
    2. R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)
    3. R语言的并行运算(CPU多核)
    展开全文
  • 【学习】R语言中的并行计算:foreach,iterators, doParallel包.pdf
  • python报错ImportError: [joblib] Attempting to do parallel computing without protecting 错误: ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that...

    python报错ImportError: [joblib] Attempting to do parallel computing without protecting

    image.png
    错误:

    ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect your main loop using “if __name__ == '__main__'”. Please see the joblib documentation on Parallel for more information

    解决方案:

    if __name__=='__main__'://加入此行代码即可
    
    展开全文
  • 成功解决ImportError: [joblib] Attempting to do parallel computing without protecting your import on a sy 目录 解决问题 解决思路 解决方法 解决问题 ImportError: [joblib] ...

    成功解决ImportError: [joblib] Attempting to do parallel computing without protecting your import on a sy

     

     

     

     

    目录

    解决问题

    解决思路

    解决方法


     

     

     

     

     

     

    解决问题

    ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect your main loop using "if __name__ == '__main__'". Please see the joblib documentation on Parallel for more information

     

     

     

     

     

    解决思路

    导入错误:[joblib]试图在不支持分叉的系统上执行并行计算而不保护导入。要在脚本中使用并行计算,您必须使用"if __name__ == '__main__'"来保护主循环。有关详细信息,请参阅并行的joblib文档。

    tips:
    1、凡是有调用方法的时候,均会出现该错误!
    from sklearn.grid_search import GridSearchCV
    因为sklearn.grid_search方法已经有所重构!

     

     

     

     

     

    解决方法

    在主程序最顶部加入主代码即可!

    if __name__=='__main__':   #主程序最顶端,加入此行代码即可

    哈哈,大功告成!

     

    展开全文
  • ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect your mai

    这里写图片描述
    错误:
    ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect your main loop using “if name == ‘main‘”. Please see the joblib documentation on Parallel for more information

    解决方案:

    from sklearn.grid_search import GridSearchCV
    if __name__=='__main__'://加入此行代码即可
        Cs=np.logspace(-6,-1,10)
        clf=GridSearchCV(estimator=svc,param_grid=dict(C=Cs),n_jobs=-1)
        clf.fit(X_digits[:1000],Y_digits[:1000])
        print (clf.best_score_)
        print (clf.best_estimator_.C)
        print (clf.score(X_digits[1000:],Y_digits[1000:]))

    这里写图片描述

    展开全文
  • 求大神指导! 代码的最后一行:model.fit(data_zs) #...ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use paral...
  • ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect you...
  • 在windows下面运行 sklearn 中的代码,如果遇到 并行...raise ImportError(‘[joblib] Attempting to do parallel computing ’ ImportError: [joblib] Attempting to do parallel computing without protecting you
  • 接着之前写的并行算法parallel包,parallel相比foreach来说,相当于是foreach的进阶版,好多东西封装了。而foreach包更为基础,而且可自定义的内容很多,而且实用性比较强,可以简单的用,也可以用得很复杂。笔者将...
  • 我个人的理解,这些包进行并行计算,有点类似控制编译器的并行开关,将数据、循环变量直接的...与sapply函数类似,foreach函数中的第一个参数是输入参数,%do%后面的对象表示运算函数,而.combine则表示运算结果的整合
  • #-*- coding: utf-8 -*- #使用K-Means算法聚类消费行为特征数据 import pandas as pd from sklearn.cluster import KMeans import matplotlib.pyplot as plt if __name__=="__main__"...
  • ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect your main ...
  • ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect your main ...
  • TBB之parallel_do

    千次阅读 2016-02-01 17:15:43
    对于一些循环,迭代空间的结束是未知的,或者循环体在循环结束之前可能增加更多的迭代,你能使用模板类tbb::parallel_do处理这2种情况。链表是迭代空间未知的例子,在并行编程中,通常使用动态数组代替链表是更好的...
  • PDO: Do in Parallel-开源

    2021-05-03 18:38:41
    pdo允许用户在多个远程主机上并行运行SSH命令,或在本地对多个远程主机并行运行命令(例如rsync等)。
  • [caffe]parallel

    千次阅读 2016-02-12 13:34:54
    The latest version of caffe can do parallel computing.Hardware Configuration AssumptionsThe current implementation uses a tree reduction strategy. e.g. if there are 4 GPUs in the system, 0:1, 2:3 will
  • R手册(Parallel Computing)–foreach ...library(doParallel) #为foreah包提供一个并行的后端 n_cores&lt;-detectCores(logical=FALSE) #获得物理内核数 registerDoParallel(cores=n_cores-1) #注册集群 ...
  • PARALLEL hint

    2015-11-05 16:55:32
    Hints – again Filed under: Hints — Jonathan Lewis @ 8:03 pm GMT Jun 17,2007  How well do you know your ... When you see this one /*+ parallel(t1 4) */ what, exactly, does it mean ? The answ
  • Is-Parallel-Programming-Hard-And-If-So-What-Can-You-Do-About-It-2011-01-02-draft, 资源来自于互联网
  • Is Parallel Programming Hard, And, If So, What Can You Do About It
  • 1 There are two switches that must be set in order to make VS build using multithreading (both are project-specific): project properties->C/...How can I do a parallel build in Visual Studio 2010?
  • Parallel Tests

    2016-11-11 16:02:00
    Parallel Tests Parallel Android Tests Appium provides a way for users to automate multiple Android sessions on a single machine. All it involves is starting multiple Appium servers with different fl...
  • php parallel

    2015-07-15 15:58:05
    http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/ http://stackoverflow.com/questions/6107339/parallel-processing-in-php-how-do-you-do-it http://stackoverflow.com/questions/45953/php
  • Is Parallel Programming Hard, And, If So, What Can You Do About It?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,804
精华内容 17,921
关键字:

doparallel