Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

executor.map() TypeError: zip argument #2 must support iteration

132 views
Skip to first unread message

iMath

unread,
Apr 1, 2013, 12:45:21 AM4/1/13
to
executor.map() TypeError: zip argument #2 must support iteration

when I run it ,just generated TypeError: zip argument #2 must support iteration.
can anyone help me fix this problem ?

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)

Steven D'Aprano

unread,
Apr 1, 2013, 3:48:34 AM4/1/13
to
On Sun, 31 Mar 2013 21:45:21 -0700, iMath wrote:

> executor.map() TypeError: zip argument #2 must support iteration
>
> when I run it ,just generated TypeError: zip argument #2 must support
> iteration. can anyone help me fix this problem ?

Yes. Read the error message, and inspect the line that is in error. You
have:

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

executor.map has three arguments:

Arg 0: str
Arg 1: list of 100 ints
Arg 2: int 60

Argument 2, the number 60, does not support iteration, since it is an int.

Now read the docs for map. At the interactive interpreter, do this:

py> from concurrent.futures import ThreadPoolExecutor
py> help(ThreadPoolExecutor.map)


and you will see the following documentation:

map(self, fn, *iterables, timeout=None)
Returns a iterator equivalent to map(fn, iter).

Args:
fn: A callable that will take take as many arguments as there are
passed iterables.
timeout: The maximum number of seconds to wait. If None, then
there is no limit on the wait time.


Notice that the iterables argument is prefixed with * symbol. That means
that it collects all the remaining positional arguments, which means that
the timeout argument is keyword only.

So try this:


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


--
Steven

iMath

unread,
Apr 2, 2013, 10:34:25 PM4/2/13
to
在 2013年4月1日星期一UTC+8下午3时48分34秒,Steven D'Aprano写道:
thanks for clarification.I thought argument 2 is lst100
0 new messages