为什么pool.map(func,argument)返回ValueError:需要多于1个值才能解包

时间:2017-05-13 11:13:06

标签: python multiprocessing pool

我正在尝试在我的CPU上的多个核心上运行python函数,但我不断收到这个错误,说“需要超过1个值来解包”。

我将两个参数传递给map函数,第一个参数是我的函数,我希望在多个核心上运行,第二个参数是一个元组列表,我希望将它作为参数传递给我的函数。

类似这样的事情

def func(list_obj):
   temp = list_obj[0]
   img = list_obj[1]


arg = list()
arg.append((img1,img2))

pool = multiprocessing.Pool(processes = 2)
results = pool.map(func,arg)
print (results)

有人可以帮助我,为什么我会收到此错误以及有什么方法可以解决此错误

1 个答案:

答案 0 :(得分:0)

我无法提供帮助,但这是一个不会产生错误的最小代码,似乎正常运行map(但我不知道结果如何应该被退回):

import multiprocessing

results = []

def func(list_obj):
    print(list_obj)
    temp = list_obj[0]
    img = list_obj[1]
    results.append( {"temp":temp, "img":img} )
    return True


if __name__=="__main__":

    iterable = list()
    iterable.append(("some",123))
    iterable.append(("data",456))
    iterable.append(("to",789))
    iterable.append(("play",789))
    iterable.append(("with","0ab"))
    print(iterable)


    pool = multiprocessing.Pool(processes = 2)
    pool.map(func, iterable)
    print(results)

也许你会在某个小东西上建立一个有效的东西,直到它破裂为止 - 然后你就可以得到代码来分享并获得帮助。