Ведение основного массива с процессом пула - PullRequest
0 голосов
/ 18 декабря 2018

Я только начинаю изучать, как работать с пулами в Python, и у меня возник вопрос о возврате глобального массива.Например, у меня есть следующий фрагмент кода:

import time
import numpy as np
import random
import multiprocessing
from multiprocessing import Pool

def f2(list):
    # append squares of mylist to result array
    out = []
    for idx, num in enumerate(list):
        out.append(idx)
    return out

def f_amp(a_list, list2, num_cores):
    chunks = [list2[i::num_cores] for i in range(num_cores)]
    out = np.array(len(list2))
    pool = Pool(processes=num_cores)

    # data = [chunks, out]
    result = pool.map_async(f2,chunks)

    while not result.ready():
        print("Running...")
        time.sleep(0.5)

    return result.get(0)

if __name__ == "__main__":
    num_cores = multiprocessing.cpu_count();
    print("Number of cores: ", num_cores)
    N = 10
    a_list = np.linspace(1, N, N)
    list2 = random.sample(range(1, N+1), N)
    print(list2)
    start = time.time()
    result = f_amp(a_list, list2, num_cores)
    end = time.time()
    print(end - start)
    print(result)

Запуск этого, результат [[0, 1, 2], [0, 1, 2], [0, 1], [0, 1]].Поэтому мой вопрос заключается в том, как сделать так, чтобы возвращаемый результат был чем-то вроде

[[0,0,0,0,1,1,1,1,2,2]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...