executor.map()TypeError:zip参数#2必须支持迭代

时间:2013-04-01 04:41:16

标签: python python-3.x

executor.map()TypeError:zip参数#2必须支持迭代

当我运行它时,只生成了TypeError:zip参数#2必须支持迭代。 任何人都可以帮我解决这个问题吗?

import time, concurrent.futures
lst100=[i for i in range(100)]

t1=time.clock()
print(list(map(str,lst100)))
t2=time.clock()
print(t2-t1)

t3=time.clock()
with concurrent.futures.ThreadPoolExecutor(max_workers=100) as executor:
    future_to_url = executor.map(str,lst100, 60)
    print(list(future_to_url))
t4=time.clock()
print(t4-t3)

1 个答案:

答案 0 :(得分:4)

concurrent.futures.Executor.map在语义上与内置函数map相同。第二个和后续的非关键字参数指定要应用给定函数的迭代。

在你的情况下,你说“这是两个迭代:一个包含100个元素的列表(lst100)和整数60.请在每对元素上调用函数str() {{ 1}}和a分别来自两个迭代,并返回结果列表。“但由于整数60实际上不是可迭代对象,因此失败。

假设您要指定60秒的超时,则需要将其作为关键字参数传递,如下所示:

b

通过在传递值之前存在future_to_url = executor.map(str, lst100, timeout=60) 前缀,将关键字参数与位置参数区分开来。在这种情况下,参数名称为name=