How to pass in argument to timeit.Timer

silverburgh.meryl at gmail.com silverburgh.meryl at gmail.com
Mon Apr 30 20:39:39 CEST 2007


On Apr 30, 1:24 pm, "silverburgh.me... at gmail.com"
<silverburgh.me... at gmail.com> wrote:
> On Apr 28, 3:37 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> wrote:
>
>
>
> > En Sat, 28 Apr 2007 15:48:11 -0300, silverburgh.me... at gmail.com
> > <silverburgh.me... at gmail.com> escribió:
>
> > > I have a function in my python like this:
> > > def callFunc(line, no):
> > >       # some code
>
> > > And I want to do a performance test like this:
> > >  for line in f:
> > >         for i in range(int(count)):
> > >             t1 = timeit.Timer("callFunc(line, i)","from __main__
> > > import callFunc")
> > >             r1 = t1.timeit();
> > >             print r1;
>
> > > but when I run it, it can't recognize the parameter 'line' and 'i',
> > > can you please tell me how to fix it? i get this error:
>
> > They go in the "setup" parameter, like this:
>
> >      t1 = timeit.Timer("callFunc(line, i)","from __main__ import callFunc;
> > line=%r; i=%d" % (line, i))
>
> Thanks I try it:
>
> def stressTest():
>     for line in f:
>         for i in range(int(count)):
>             print i;
>             t1 = timeit.Timer("callFunc(line, i)","from __main__
> import callFunc; line=%r; i=%d" % (line, i))
>             r1 = t1.timeit();
>             times.append(r1);
>             print r1;
>
> But it keeps calling callFunc() and it never returns from my loop. The
> value of 'count' is 2.
>
> Thank you.
>
> > If it gets much longer, try this:
>
> > setup = """
> >  from __main__ import callFunc
> > line = %r
> > i = %d""" % (line, i)
> > stmt = "callFunc(line, i)"
> > t1 = timeit.Timer(stmt, setup)
>
> > --
> > Gabriel Genellina
>
> > PS: Please leave out the final ; - this is Python, not C nor ...
> > PS2: Perhaps the only place where I've used ; is with timeit. And even
> > then you can avoid them as in the last example.

I think I solve the problem by putting a number in timeit() function.
thank you.




More information about the Python-list mailing list