如何使用joblib Python返回矩阵?
问题描述:
我有一个函数返回一个列表。我正在使用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)
我想val
存储所有retruned列出了每个迭代从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
我能做到这一点与并行?
答
其实,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]]