1

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

当我运行它时,刚刚生成 TypeError: zip argument #2 must support iteration。谁能帮我解决这个问题?

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)
4

1 回答 1

4

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

在您的情况下,您说“这里有两个可迭代对象:100 个元素lst100的列表( " 但是由于整数 60 实际上不是一个可迭代的对象,所以它失败了。str()ab

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

future_to_url = executor.map(str, lst100, timeout=60)

关键字参数与位置参数的区别在于name=在传递值之前存在前缀。在这种情况下,参数名称是timeout

于 2013-04-01T04:55:02.980 回答