gpt4 book ai didi

python - 如何在数组上使用 multiprocessing.Pool?

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:56 28 4
gpt4 key购买 nike

我有一个用于数组的简单函数,但是当我将 multiprocessing.Pool 与函数和数组一起使用时,我收到错误消息“元组索引超出范围”。我该如何解决?

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,函数得到的array是:

[[1. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]]

如果使用pool.map,函数得到的array是:

[1. 0. 0. 0.]

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

map(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))

关于python - 如何在数组上使用 multiprocessing.Pool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54320605/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com