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()
.
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.