2016-02-26 3 views
1

У меня есть функция, которая возвращает список. Я использую joblib для параллельной обработки.Как вернуть матрицу с помощью joblib Python?

from joblib import Parallel, delayed 
def myFunc(c, K, N): 
    # something 
    return myList 
inputs = range(500) 
if __name__ == '__main__': 
    val = Parallel(n_jobs=20)(delayed(myFunc)(c, K, N) for c in inputs) 

Я хотел бы хранить все retruned-списки val в каждой итерации от 1 до 500, а затем использовать их.

Без параллельно я бы это сделать, как:

def myFunc(c, K, N): 
    # something 
    return myList 
inputs = range(500) 
lists = [] 
for c in inputs: 
    val = myFunc(c, K, N) 
    lists.append(val) 
# Now I have all the lists 

Могу ли я сделать это с параллельно?

ответ

1

Фактически, joblib.Parallel выполните эту работу за вас.

from __future__ import print_function 
from joblib import Parallel, delayed 
import random 


def my_func(c, K, N): 
    my_list = [random.randrange(3) for _ in range(K*N)] 
    return my_list 


if __name__ == '__main__': 
    inputs = range(2) 
    K, N = 3, 3 
    val = Parallel(n_jobs=2)(delayed(my_func)(c, K, N) for c in inputs) 
    print(val) 

Это напечатает

[[0, 1, 1, 0, 1, 2, 2, 1, 1], [2, 1, 2, 0, 1, 1, 2, 1, 0]] 
Смежные вопросы