为什么list.extend会在这种情况下附加?

时间:2017-10-18 23:37:38

标签: python python-2.7 multiprocessing

我正在使用multiprocessing.Pool的回调组件:

def foo(x):
    err = []
    return err

errors = []
res = pool.map_async(foo, mylist, callback=errors.extend)

print errors

我得到了:

[[]]

如果我在foo()内部向err追加测试错误,我明白了:

[['test']]

我在这里缺少什么想法?

为什么它不反映这种行为:

a = []
b = []
a.extend(b)
print a

结果:

[]

1 个答案:

答案 0 :(得分:0)

我无法发表评论,所以我发了一个答案。 pool.map_async将返回列表,将其命名为Result。 你的回调函数适用于这个Result。在你的情况下,Result是[[err0],[err1],...],所以error.extend(Result)得到[[]]。 试试这个:

const randomArray = (length, max) => {
  return Array(length).fill().map((el) =>{ 
    return Math.round(Math.random() * max)
  })
}

const largestNumber = (numbers) => {
  return Math.max(...numbers)
}

largestNumber(randomArray(5, 500))