Python 如何在阵列上使用多处理.Pool?
我有一个简单的函数用于数组,但是当我使用multiprocessing.Pool函数和数组时,会收到错误消息“tuple index out range”。我怎么修理它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):
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))