Python 如何在阵列上使用多处理.Pool?

Python 如何在阵列上使用多处理.Pool?,python,multiprocessing,Python,Multiprocessing,我有一个简单的函数用于数组,但是当我使用multiprocessing.Pool函数和数组时,会收到错误消息“tuple index out range”。我怎么修理它 import numpy as np import multiprocessing var1 = 4 array = np.zeros((var1, var1)) for i in range(np.size(array,1)): array[i,0] = 1 def function(array):

我有一个简单的函数用于数组,但是当我使用multiprocessing.Pool函数和数组时,会收到错误消息“tuple index out range”。我怎么修理它

import numpy as np
import multiprocessing
var1 = 4

array = np.zeros((var1, var1))
    for i in range(np.size(array,1)):
        array[i,0] = 1

def function(array):
    for i in range(np.size(array,1)):
        for t in range( np.size(array,0) - 1):
            array[i,t+1] = array[i,t] + 1
    return(array)

from multiprocessing import Pool

if __name__ == '__main__':
    pool = Pool(processes=2)
    print(pool.map(function, array))

我希望看到一个4x4数组,其中每行是:1 2 3 4。

如果不使用
pool.map
,函数获取的
数组是:

[[1. 0. 0. 0.]
 [1. 0. 0. 0.]
 [1. 0. 0. 0.]
 [1. 0. 0. 0.]]
[1. 0. 0. 0.]
如果使用
pool.map
,函数获取的
数组是:

[[1. 0. 0. 0.]
 [1. 0. 0. 0.]
 [1. 0. 0. 0.]
 [1. 0. 0. 0.]]
[1. 0. 0. 0.]
因此,您不应该像不使用
pool.map
一样,使用相同的逻辑来处理
function
中的
array

映射(func,iterable[,chunksize=None])

您需要像下面这样使用:

import numpy as np
import multiprocessing
var1 = 4

array = np.zeros((var1, var1))
for i in range(np.size(array,1)):
    array[i,0] = 1

def function(array):
    for i in range(np.size(array) - 1):
        array[i+1] = array[i] + 1
    return(array)

from multiprocessing import Pool

if __name__ == '__main__':
    pool = Pool(processes=2)
    print(pool.map(function, array))