python 多处理池示例,使用3D numpy数组作为输入,在计算密集型堆栈上使用所有CPU内核。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 多处理池示例,使用3D numpy数组作为输入,在计算密集型堆栈上使用所有CPU内核。相关的知识,希望对你有一定的参考价值。

from multiprocessing import Pool
import numpy as np


n = 1000000
x = 5
y = 5
z = 100


def f(x):
    #print x.shape
    for i in range(n):
        x = x**2
        x = np.sqrt(x)


    return np.sum(x)


if __name__ == '__main__':
    m = np.random.random((x,y,z))
    #print m[:,:].shape
    
    result = np.ndarray((x,y), dtype=object)
    
    p = Pool()
    for i in range(m.shape[0]):
        for j in range(m.shape[1]):
            result[i,j] = p.apply_async(f, [m[i,j,:]])
    p.close()
    
    numresult = np.zeros((x,y))
    
    for i in range(m.shape[0]):
        for j in range(m.shape[1]):
            numresult[i,j] = result[i,j].get()
                    
    print numresult

以上是关于python 多处理池示例,使用3D numpy数组作为输入,在计算密集型堆栈上使用所有CPU内核。的主要内容,如果未能解决你的问题,请参考以下文章

具有 numpy 函数的多处理池

在 python 多处理中传递共享内存变量

我是不是正确使用了python池?

多处理池 - 大多数工作人员已加载但仍处于空闲状态

scikit-learn joblib 错误:多处理池 self.value 超出“i”格式代码的范围,仅适用于大型 numpy 数组

如何为多处理池中的单个进程分配 python 请求会话?