我正在尝试取两个数组,“第1天”:范围从0到11(增加+1)和“第2天”,范围从11到0(增加-1),并将它们相加。但是,我希望使用多处理和dask数组来加快处理速度(稍后我将介绍更大的数字)。我想将第1天和第2天分成四个相等的部分(第1天:[0,1,2],[3,4,5],[6,7,8],[9,10,11]和天2:[11、10、9],[8、7、6],[5、4、3],[2、1、0]),并具有四个过程可在每个后续数组上添加工作(即,day1的[ 0,1,2]与第2天的[11,10,9]并得到[11,11,11]。在完成所有四个过程之后,我希望返回到一个大列表[11,11,11] 11、11、11、11、11、11、11、11、11]。但是,在加粗步骤的功能内,代码无法运行,并陷入无限循环或某种形式的计算中。
代码:
import numpy as np
import dask.array as da
from dask import delayed
import threading
import multiprocessing as mp
NUM_WORKERS = 4
# create list from 0 to 11
day1 = list(range(12))
# create list form 11 to 0
day2 = day1[::-1]
def get_sum(i, base):
z = []
x = day1[i * length: i * length + length]
y = day2[i * length: i * length + length]
z.append(x)
z.append(y)
converted = da.from_array(z, chunks = NUM_WORKERS)
**summed = da.sum(converted, axis = 0).compute()**
list_concatenate = np.concatenate((base, summed), axis=0)
all_sum = sum(list_concatenate)
process_list = []
for i in range(NUM_WORKERS):
process_list = mp.Process(target = get_sum, args = (i, process_list))
process_list.start()
process_list.join()