我使用类似于以下内容的东西来并行化两个矩阵的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))
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:解压缩的值太多(预期2)
有没有办法返回延迟的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
Run Code Online (Sandbox Code Playgroud)
我想避免使用has_shareable_memory,以避免在实际脚本中出现可能的错误交互并降低性能(?)
我在处理一对长列表对的最大值时遇到了一个非常奇怪的问题,例如
[
[(0, 1), (1, 1), (2, 1), (3, 4), (4, 1), (5, 1), (6, 1),...,(141,3)],
...,
[(12, 1), (36, 1), (91, 1), (92, 1), (110, 1),..., (180, 1)]
]
Run Code Online (Sandbox Code Playgroud)
我试图获得所有对中第一个元素的最大值.从语法上说,我在做:
max([max(x) for x in list])[0]
Run Code Online (Sandbox Code Playgroud)
实际上返回正确的数字,如果列表短于281个列表.事实上,一旦列表超过280,我就会收到此消息
ValueError: max() arg is an empty sequence
Run Code Online (Sandbox Code Playgroud)
所以,一长串清单
max([max(x) for x in list[0:280]])[0]
Run Code Online (Sandbox Code Playgroud)
这很好,而
max([max(x) for x in list[0:281]])[0]
Run Code Online (Sandbox Code Playgroud)
休息.
我在这里做错了吗?