达不到功能的多处理池失败

时间:2018-07-02 17:31:51

标签: python python-multiprocessing dask

我正在尝试取两个数组,“第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()

0 个答案:

没有答案