executor.map() TypeError: zip argument #2 must support iteration
iMath
redstone-cold at 163.com
Tue Apr 2 22:34:25 EDT 2013
在 2013年4月1日星期一UTC+8下午3时48分34秒,Steven D'Aprano写道:
> 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
thanks for clarification.I thought argument 2 is lst100
More information about the Python-list
mailing list