Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Working with time.process_time()

I'm trying to time how long a sort function takes, but I am struggling getting time.process_time() to work.

My current setup is:

start = time.process_time()
insertionsort(n)
end = time.process_time()

time = start-end

When I run this, I am getting this error:

'float' object has no attribute 'process_time'

How do I fix this problem? I want to use time.process_time().

like image 974
Brian Scalabrine of R Avatar asked Jan 04 '23 03:01

Brian Scalabrine of R


1 Answers

The issue is in a part of the code that you didn't show. I assume that you imported the time module in the beginning:

import time

Which creates a name time that references the time module.

But later you create a variable named time that stores the time difference. At that point the name time references the difference and not the module. So when you try to use time.process_time() afterwards you get the Error.

This simple snippet illustrates the problem:

>>> import time
>>> time = -(time.process_time() - time.process_time())
>>> time.process_time()
AttributeError: 'float' object has no attribute 'process_time'

If you insist on using time.process_time() the best way around would be to rename the variable that stores the time difference:

measured_execution_time_insertionsort = end - start

But you could also import the process_time function from the time module directly:

from time import process_time

start = process_time()
insertionsort(n)
end = process_time()

time = end - start

Both approaches avoid the name clash. However I would recommend you use the timeit module if you want to measure executions times, it's better suited for this kind of task than the time module.

like image 106
MSeifert Avatar answered Jan 15 '23 15:01

MSeifert