469,625 Members | 1,134 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,625 developers. It's quick & easy.

How to use time.clock() function in python

Hi,

I am following this python example trying to time how long does an
operation takes, like this:

My question is why the content of the file (dataFile) is just '0.0'?
I have tried "print >>dataFile, timeTaken" or "print >>dataFile,str(
timeTaken)", but gives me 0.0.
Please tell me what am I missing?
t1 = time.clock()
os.system(cmd)

outputFile = str(i) + ".png"

t2 = time.clock()

timeTaken = t2 - t1
allTimeTaken += timeTaken
print >>dataFile, timeTaken

Jan 22 '07 #1
5 5308
On Mon, 22 Jan 2007 14:05:16 -0800, yi*****@gmail.com wrote:
Hi,

I am following this python example trying to time how long does an
operation takes, like this:

My question is why the content of the file (dataFile) is just '0.0'?
I have tried "print >>dataFile, timeTaken" or "print >>dataFile,str(
timeTaken)", but gives me 0.0.
Please tell me what am I missing?
t1 = time.clock()
os.system(cmd)

outputFile = str(i) + ".png"

t2 = time.clock()

timeTaken = t2 - t1
allTimeTaken += timeTaken
print >>dataFile, timeTaken


For the correct way to time operations, see the timeit module.

For your specific problem, it is hard to tell what you are doing wrong
when you don't tell us what "datafile" is. What's "outfile" for? It gets
created *after* the command runs, but doesn't get used.
--
Steven.

Jan 22 '07 #2
At Monday 22/1/2007 19:05, yi*****@gmail.com wrote:
>I am following this python example trying to time how long does an
operation takes, like this:

My question is why the content of the file (dataFile) is just '0.0'?
I have tried "print >>dataFile, timeTaken" or "print >>dataFile,str(
timeTaken)", but gives me 0.0.
Please tell me what am I missing?
t1 = time.clock()
os.system(cmd)

outputFile = str(i) + ".png"

t2 = time.clock()

timeTaken = t2 - t1
allTimeTaken += timeTaken
print >>dataFile, timeTaken
time.clock() may not give you enough precision; see this recent post
http://mail.python.org/pipermail/pyt...ry/422676.html
Use the timeit module instead.
--
Gabriel Genellina
Softlab SRL


__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas

Jan 22 '07 #3
Thanks.

I have a fuction called 'func1'.

def func1:
# logic of the function

When my script just call 'func1()' it works.
func1()

But when put it under timerit.Timer, like this:
t = timeit.Timer("func1()","")
t.repeat(1, 10)

# want to time how long it takes to run 'func1' 10 times, I get an
error like this:
File "/usr/lib/python2.4/timeit.py", line 188, in repeat
t = self.timeit(number)
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 'func1' is not defined

I don't understand why i can't find 'func1', when I call the function
'func1' directly, it works.
but why when I call it within 'timeit', it can't find it?

Thank you.

Gabriel Genellina wrote:
At Monday 22/1/2007 19:05, yi*****@gmail.com wrote:
I am following this python example trying to time how long does an
operation takes, like this:

My question is why the content of the file (dataFile) is just '0.0'?
I have tried "print >>dataFile, timeTaken" or "print >>dataFile,str(
timeTaken)", but gives me 0.0.
Please tell me what am I missing?
t1 = time.clock()
os.system(cmd)

outputFile = str(i) + ".png"

t2 = time.clock()

timeTaken = t2 - t1
allTimeTaken += timeTaken
print >>dataFile, timeTaken

time.clock() may not give you enough precision; see this recent post
http://mail.python.org/pipermail/pyt...ry/422676.html
Use the timeit module instead.
--
Gabriel Genellina
Softlab SRL


__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
Jan 22 '07 #4
On Mon, 22 Jan 2007 15:32:58 -0800, samuel.y.l.cheung wrote:
File "/usr/lib/python2.4/timeit.py", line 188, in repeat
t = self.timeit(number)
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 'func1' is not defined

I don't understand why i can't find 'func1', when I call the function
'func1' directly, it works.
but why when I call it within 'timeit', it can't find it?
Because the code in timeit is running in a different namespace. You have
to import your function first. That's what the setup parameter is used for.

Here's the hard way:

t = timeit.Timer("func1()", """def func1():
#do something here
return result
""")
Here's the easy way:

t = timeit.Timer("func1()", "from __main__ import func1")

--
Steven D'Aprano

Jan 23 '07 #5
yi*****@gmail.com <yi*****@gmail.comwrote:
I am following this python example trying to time how long does an
operation takes, like this:

My question is why the content of the file (dataFile) is just '0.0'?
I have tried "print >>dataFile, timeTaken" or "print >>dataFile,str(
timeTaken)", but gives me 0.0.
Please tell me what am I missing?
t1 = time.clock()
os.system(cmd)

outputFile = str(i) + ".png"

t2 = time.clock()

timeTaken = t2 - t1
allTimeTaken += timeTaken
print >>dataFile, timeTaken
Under unix, time.clock() measures CPU time used by the current
process. os.system() will consume almost zero CPU while it waits for
the command you ran to finish.

You probably want time.time(), eg
>>from time import clock, time
print clock(), time()
0.01 1169573460.96
>>print clock(), time()
0.01 1169573463.76
>>print clock(), time()
0.01 1169573467.09
>>>
However running the same under windows you get a quite different
result :-
>>from time import clock, time
print clock(), time()
7.54285810068e-006 1169574534.84
>>print clock(), time()
3.32073322168 1169574538.16
>>print clock(), time()
7.32428004118 1169574542.15
>>>
In windows clock() counts in real time and at much higher resolution
than time().

Under windows time() counts in 1ms steps wheras it usually counts in
1us steps under linux.

--
Nick Craig-Wood <ni**@craig-wood.com-- http://www.craig-wood.com/nick
Jan 23 '07 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by Szabolcs Nagy | last post: by
5 posts views Thread by Sinan Nalkaya | last post: by
5 posts views Thread by Tobiah | last post: by
5 posts views Thread by raybakk | last post: by
18 posts views Thread by Giovanni Bajo | last post: by
9 posts views Thread by Ron Adam | last post: by
8 posts views Thread by Theo v. Werkhoven | last post: by
reply views Thread by gheharukoh7 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.