How to pass in argument to timeit.Timer
silverburgh.meryl at gmail.com
silverburgh.meryl at gmail.com
Mon Apr 30 14:39:39 EDT 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