首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dask并行处理比使用pathos多处理要慢得多

Dask并行处理比使用pathos多处理要慢得多
EN

Stack Overflow用户
提问于 2020-02-11 00:23:12
回答 1查看 166关注 0票数 0

我是一个使用dask的新手,我正在尝试理解如何利用dask多处理,而不是pathos多处理。令我惊讶的是,dask比pathos慢3-4倍。我显然做错了什么,希望能得到任何关于这方面的指导。

下面是我试图设置一个简单的算术操作的代码:

代码语言:javascript
复制
from pathos.multiprocessing import ProcessingPool as Pool
import pandas as pd, numpy as np,time
from dask import dataframe as dd
from dask.multiprocessing import get
from multiprocessing import cpu_count
nCores = cpu_count()

class test_pathos:
    def __init__(self):
        self.NumCols = 270
        self.NumRows = 250000
        self.cols = ['Col'+ str(i) for i in range(self.NumCols)]
        self.data = pd.DataFrame(np.random.randint(0,5,size=(self.NumRows,self.NumCols)),columns=self.cols)


    def ProcessCol(self,x):
        colname = x.name
        DQCol = colname + r'_DQ'
        self.data.loc[:, DQCol] = self.data[colname] + 1

    def AddTodata(self,colname):
        DQColumn = colname+r'_DQ'
        self.data.loc[:,DQColumn] = self.data[colname]+1
        return self.data[DQColumn]

    def AddProcess(self):
        p = Pool(nodes = nCores)
        ChangedCols = p.map(self.AddTodata,self.cols)
        ChangedColsDf = pd.concat(ChangedCols,axis=1)
        self.data = pd.concat([self.data,ChangedColsDf],axis=1)

    def AddProcess_apply(self):
        '---self.data.apply(self.ProcessCol)'
        dd.from_pandas(self.data, npartitions=nCores).map_partitions(lambda df : df.apply(self.ProcessCol)).compute(scheduler='processes')


'----------------------------------------------------MAIN---------------------------------------------------------------------'
if __name__ == "__main__":
    test_obj = test_pathos()
    tinit = time.time()
    shapebeforetransmutation = test_obj.data.shape
    test_obj.AddProcess()
    shapeaftertransmutation = test_obj.data.shape
    print('Pathos call time is :', time.time() - tinit)
    tinit = time.time()
    test_obj.AddProcess_apply()
    print('Dask call time is : ', time.time() - tinit)
EN

回答 1

Stack Overflow用户

发布于 2020-02-16 06:29:19

性能取决于很多因素。它可能是管理费用、数据传输或其他任何东西。不幸的是,如果不重新做实验,就不太容易判断。

要了解更多关于Dask性能的信息,建议阅读Understanding Performance文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60154413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档