gpt4 book ai didi

python - 多处理 Pool.map 函数问题

转载 作者:行者123 更新时间:2023-11-28 20:22:04 31 4
gpt4 key购买 nike

我有一个像下面这样的函数,它接受一个列表和一个路径:

def my_function(items_list,directory):
return(resulting number of analyzing items_list for example [a,b] using specific file for example 'c:\\path')

为了进行并行计算,我使用如下多处理模块:

from multiprocessing import Pool
def test_func(objs):
pool= Pool(8)
result=pool.map(my_function,objs)
return(result)


if __name__=='__main__':
objects=[([a,b],'path1',),([c,d],'path2',),.....]
result=test_funct(objects)

但它给了我以下错误: 类型错误:my_function() 缺少 1 个必需的位置参数:“目录”

我多次更改对象列表格式,但它总是给我同样的错误。有人知道问题出在哪里吗?(我在 Windows 7 上使用 python33)

最佳答案

multiprocessing.map 不会解压元组中的变量。所以 myfunction 正在接收一个元组参数,而不是一个列表和一个字符串。

如果您使用的是 Python 3.3+(看起来是这样),您可以使用 starmap ,这将扩展元组:

 result = pool.starmap(my_function,objs)

如果您使用的是 Python 3.2 或更低版本,最简单的方法是让 my_function 接受一个参数,并在函数体中展开元组:

def my_function(tup)
items_list, directory = tup

如果您不能更改 my_function,请添加一个辅助函数来为您解包:

def my_function_helper(tup):
return my_function(*tup)

关于python - 多处理 Pool.map 函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075809/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com