By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,345 Members | 1,790 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,345 IT Pros & Developers. It's quick & easy.

How to pass in argument to timeit.Timer

P: n/a
Hi,

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:

File "/usr/lib/python2.4/timeit.py", line 161, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
NameError: global name 'line' is not defined

Thank you.

Apr 28 '07 #1
Share this Question
Share on Google+
3 Replies


P: n/a
En Sat, 28 Apr 2007 15:48:11 -0300, si***************@gmail.com
<si***************@gmail.comescribió:
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))

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.
Apr 28 '07 #2

P: n/a
On Apr 28, 3:37 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:
En Sat, 28 Apr 2007 15:48:11 -0300, silverburgh.me...@gmail.com
<silverburgh.me...@gmail.comescribió:
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.

Apr 30 '07 #3

P: n/a
On Apr 30, 1:24 pm, "silverburgh.me...@gmail.com"
<silverburgh.me...@gmail.comwrote:
On Apr 28, 3:37 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:
En Sat, 28 Apr 2007 15:48:11 -0300, silverburgh.me...@gmail.com
<silverburgh.me...@gmail.comescribió:
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.

Apr 30 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.