Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么list.extend会在这种情况下追加?_Python_Python 2.7_Multiprocessing - Fatal编程技术网

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

Python 为什么list.extend会在这种情况下追加?,python,python-2.7,multiprocessing,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 = []

我正在使用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
结果:

[]

我不能评论,所以我发布了一个答案。 pool.map_async将返回一个列表,称之为结果。 您的回调函数将应用于此结果。在您的情况下,结果是[[err0]、[err1]、…],因此错误。扩展(结果)获取[[]。 试试这个:

def foo(x):
    err = something
    return err

errors = []
res = pool.map_async(foo, mylist, callback=errors.extend)
# or
# res.wait()
# print res.get()
print errors

我无法复制你的结果。当我在顶部运行代码时(添加了一点样板文件以使其正常工作),结果是得到一个空列表。我在Python3.6(在更改
print
调用之后)和2.7中都得到了这一点。