How do I get time of a Python program's execution?

后端 未结 30 1639
甜味超标
甜味超标 2020-11-22 02:20

I have a command line program in Python that takes a while to finish. I want to know the exact time it takes to finish running.

I\'ve looked at the timeit

相关标签:
30条回答
  • 2020-11-22 03:03

    Even better for Linux: time

    $ time -v python rhtest2.py
    
        Command being timed: "python rhtest2.py"
        User time (seconds): 4.13
        System time (seconds): 0.07
        Percent of CPU this job got: 91%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.58
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 0
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 15
        Minor (reclaiming a frame) page faults: 5095
        Voluntary context switches: 27
        Involuntary context switches: 279
        Swaps: 0
        File system inputs: 0
        File system outputs: 0
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
    
    0 讨论(0)
  • 2020-11-22 03:03

    Just use the timeit module. It works with both Python 2 and Python 3.

    import timeit
    
    start = timeit.default_timer()
    
    # All the program statements
    stop = timeit.default_timer()
    execution_time = stop - start
    
    print("Program Executed in "+str(execution_time)) # It returns time in seconds
    

    It returns in seconds and you can have your execution time. It is simple, but you should write these in thew main function which starts program execution. If you want to get the execution time even when you get an error then take your parameter "Start" to it and calculate there like:

    def sample_function(start,**kwargs):
         try:
             # Your statements
         except:
             # except statements run when your statements raise an exception
             stop = timeit.default_timer()
             execution_time = stop - start
             print("Program executed in " + str(execution_time))
    
    0 讨论(0)
  • 2020-11-22 03:03

    This is Paul McGuire's answer that works for me. Just in case someone was having trouble running that one.

    import atexit
    from time import clock
    
    def reduce(function, iterable, initializer=None):
        it = iter(iterable)
        if initializer is None:
            value = next(it)
        else:
            value = initializer
        for element in it:
            value = function(value, element)
        return value
    
    def secondsToStr(t):
        return "%d:%02d:%02d.%03d" % \
            reduce(lambda ll,b : divmod(ll[0],b) + ll[1:],
                [(t*1000,),1000,60,60])
    
    line = "="*40
    def log(s, elapsed=None):
        print (line)
        print (secondsToStr(clock()), '-', s)
        if elapsed:
            print ("Elapsed time:", elapsed)
        print (line)
    
    def endlog():
        end = clock()
        elapsed = end-start
        log("End Program", secondsToStr(elapsed))
    
    def now():
        return secondsToStr(clock())
    
    def main():
        start = clock()
        atexit.register(endlog)
        log("Start Program")
    

    Call timing.main() from your program after importing the file.

    0 讨论(0)
  • 2020-11-22 03:05
    from time import time
    start_time = time()
    ...
    end_time = time()
    time_taken = end_time - start_time # time_taken is in seconds
    hours, rest = divmod(time_taken,3600)
    minutes, seconds = divmod(rest, 60)
    
    0 讨论(0)
  • 2020-11-22 03:06
    import time
    
    start_time = time.clock()
    main()
    print time.clock() - start_time, "seconds"
    

    time.clock() returns the processor time, which allows us to calculate only the time used by this process (on Unix anyway). The documentation says "in any case, this is the function to use for benchmarking Python or timing algorithms"

    0 讨论(0)
  • 2020-11-22 03:06

    Later answer, but I use timeit:

    import timeit
    code_to_test = """
    a = range(100000)
    b = []
    for i in a:
        b.append(i*2)
    """
    elapsed_time = timeit.timeit(code_to_test, number=500)
    print(elapsed_time)
    # 10.159821493085474
    

    • Wrap all your code, including any imports you may have, inside code_to_test.
    • number argument specifies the amount of times the code should repeat.
    • Demo
    0 讨论(0)
提交回复
热议问题