多处理:将数组列表传递(并迭代)到池映射



我一直在尝试将字符串传递到函数中。

例如,对于input_list_1,我发现函数的返回部分正确——只有与处理器数量匹配的前n个是正确的。其余输出不正确。我尝试了chunksize输入和map_async,但没有成功。

pool = mp.Pool(processes=2)
input_list_1=['string1','string2','string3','string4']
results=pool.map(somefunction, input_list_1)

然而,当我按照input_list_2(每个数组都与处理器的数量相匹配(中所示中断输入,并将input_list_2[0]和input_list_3[1]作为单独的参数传递时,我发现函数的返回更可预测,并且符合我的预期。

有没有一种方法可以传递input_list_2作为参数并进行某种类型的迭代?我已经尝试了所有我能找到的与迭代相关的东西——imap、map_async、starmap。

pool = mp.Pool(processes=2)
input_list_2=[('string1','string2'),('string3','string4')]
results=pool.map(somefunction, input_list_2)

您可能有这样的东西:

def somefunc(str):
##string specific method
print(str.strip())
pool = mp.Pool(processes=2)
input_list=['string1 ','string2 ','string3 ','string4']
pool.map(somefunction, input_list)
string1
string2
string3
string4

其中map将把迭代表中的每个字符串发送到somefunc。

然而,当你把你的列表分成两个元组时:

input_list_2=[('string1','string2'),('string3','string4')]

它将元组CCD_ 1作为参数发送到CCD_。

如果您真的想以这种方式对它们进行分块,那么您的函数必须处理一个元组。

def somefunc(tuple):
##string specific method
for x in tuple:
print(x.strip())

pool = mp.Pool(processes=2)
input_list_2=[('string1 ','string2 '), ('string3 ','string4')]
pool.map(somefunction, input_list_2)

string1
string2
string3
string4

相关内容

  • 没有找到相关文章

最新更新