Как заполнить глобальную переменную Python joblib? - PullRequest
0 голосов
/ 27 апреля 2018

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

import numpy as np
import multiprocessing
from joblib import Parallel, delayed

global_var = np.zeros(10)

def populate(idx):
   print('I am core',idx,'\')
   global_var[idx] = idx

num_cores = multiprocessing.cpu_count()
Parallel(n_jobs=num_cores)(delayed(populate)(idx) for idx in range(len(global_var))`

если я проверю global_var перед запуском чего-либо еще, это массив нулей; когда я запускаю код, массив заполнен значениями None.

Как я могу вернуть значения из функции и заполнить глобальный массив?

Большое спасибо заранее! =)

1 Ответ

0 голосов
/ 27 апреля 2018

По сути, вы не можете сделать это таким образом: вам нужно указать серверную часть с общей памятью или вручную создать общую память. Это немного сложнее (но описано в документации).

Здесь самый простой способ добиться этого - определить вашу функцию так, чтобы она возвращала результат своих вычислений, а затем обрабатывать эти результаты (возвращаемые вызовом Parallel(..)(..) в основном процессе (после начала строки) с Parallel).

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