Search code examples
pythonpython-3.xattributeerror

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


Solution

  • 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.