【发布时间】:2017-05-13 11:13:05
【问题描述】:
我正在尝试在我的 CPU 上的多个内核上运行 python 函数,但我不断收到此错误消息,提示“需要超过 1 个值才能解包”。
我将两个参数传递给映射函数,第一个参数是我想在多个内核上运行的函数,第二个参数是我想作为参数传递给我的函数的元组列表。
类似的东西
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)
谁能帮助我为什么会出现这个错误以及有什么可能的方法来解决这个错误
【问题讨论】:
-
如果您在单独的行上执行
arg.append(img1)然后arg.append(img2)是否有效?我认为您的论点可能是((img1, img2))而不是(img1, img2)这是您的函数所期望的? -
需要在 map 函数中传递的参数必须是一些可迭代的,如果你仔细观察每个进程,参数会被划分为更多的占位符,如 list_obj[0]、list_obj[1] 等。我的程序接受元组形式的参数,例如 (img1,img2)。
-
你在哪一行得到错误?
-
我在这里遇到错误:results = pool.map(func,arg)
-
对这些参数进行调试打印,以验证是否有多个值需要解压。
标签: python multiprocessing pool