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)
答案 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=
。