Python,与 joblib 的并行化:延迟多个参数
Python, parallelization with joblib: Delayed with multiple arguments
我正在使用类似于以下内容的方法在两个矩阵上并行化 for 循环
from joblib import Parallel, delayed
import numpy
def processInput(i,j):
for k in range(len(i)):
i[k] = 1
for t in range(len(b)):
j[t] = 0
return i,j
a = numpy.eye(3)
b = numpy.eye(3)
num_cores = 2
(a,b) = Parallel(n_jobs=num_cores)(delayed(processInput)(i,j) for i,j in zip(a,b))
但我收到以下错误:要解压的值太多(预期为 2)
有没有办法 return 延迟 2 个值?或者您会提出什么解决方案?
另外,有点OP,有没有更紧凑的方法,像下面这样(实际上不修改任何东西)来处理矩阵?
from joblib import Parallel, delayed
def processInput(i,j):
for k in i:
k = 1
for t in b:
t = 0
return i,j
无论如何我都想避免使用 has_shareable_memory,以避免实际脚本中可能出现的不良交互和较低的性能(?)
可能为时已晚,但作为对问题第一部分的回答:
只是 return 延迟函数中的一个元组。
return (i,j)
以及保存所有延迟函数输出的变量
results = Parallel(n_jobs=num_cores)(delayed(processInput)(i,j) for i,j in zip(a,b))
现在结果是一个元组列表,每个元组包含一些 (i,j),您可以迭代结果。
我正在使用类似于以下内容的方法在两个矩阵上并行化 for 循环
from joblib import Parallel, delayed
import numpy
def processInput(i,j):
for k in range(len(i)):
i[k] = 1
for t in range(len(b)):
j[t] = 0
return i,j
a = numpy.eye(3)
b = numpy.eye(3)
num_cores = 2
(a,b) = Parallel(n_jobs=num_cores)(delayed(processInput)(i,j) for i,j in zip(a,b))
但我收到以下错误:要解压的值太多(预期为 2)
有没有办法 return 延迟 2 个值?或者您会提出什么解决方案?
另外,有点OP,有没有更紧凑的方法,像下面这样(实际上不修改任何东西)来处理矩阵?
from joblib import Parallel, delayed
def processInput(i,j):
for k in i:
k = 1
for t in b:
t = 0
return i,j
无论如何我都想避免使用 has_shareable_memory,以避免实际脚本中可能出现的不良交互和较低的性能(?)
可能为时已晚,但作为对问题第一部分的回答: 只是 return 延迟函数中的一个元组。
return (i,j)
以及保存所有延迟函数输出的变量
results = Parallel(n_jobs=num_cores)(delayed(processInput)(i,j) for i,j in zip(a,b))
现在结果是一个元组列表,每个元组包含一些 (i,j),您可以迭代结果。