相关疑难解决方法(0)

254
推荐指数
3
解决办法
22万
查看次数

Python多处理:如何知道使用Pool还是Process?

所以我有一个我正在编写的算法,该函数multiprocess应该调用另一个函数,CreateMatrixMp()并行调用与cpus一样多的进程.我以前从未做过多处理,也不能确定以下哪种方法更有效.在函数的上下文中使用"高效"这个词CreateMatrixMp()需要被调用数千次.我已经阅读了python multiprocessing模块的所有文档,并且已经有了这两种可能性:

首先是使用这个Pool类:

def MatrixHelper(self, args):
    return self.CreateMatrix(*args)

def Multiprocess(self, sigmaI, sigmaX):

    cpus = mp.cpu_count()
    print('Number of cpu\'s to process WM: %d' % cpus)
    poolCount = cpus*2
    args = [(sigmaI, sigmaX, i) for i in range(self.numPixels)]

    pool = mp.Pool(processes = poolCount, maxtasksperchild= 2)
    tempData = pool.map(self.MatrixHelper, args)
    pool.close()
    pool.join()
Run Code Online (Sandbox Code Playgroud)

接下来是使用这个Process类:

def Multiprocess(self, sigmaI, sigmaX):

    cpus = mp.cpu_count()
    print('Number of cpu\'s to process WM: %d' % cpus)

    processes = [mp.Process(target …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing threadpool

14
推荐指数
1
解决办法
2万
查看次数