Averiguar el tiempo que se tomó para una secuencia de comandos de python para la completa ejecución

Tengo el siguiente código en un script de python:

def fun(): 
  #Code here

fun()

Quiero ejecutar esta secuencia de comandos y también averigüe cuánto tiempo le tomó a ejecutar en cuestión de minutos. ¿Cómo puedo saber cuánto tiempo tomó para que este script se ejecute ? Un ejemplo sería muy apreciada.

InformationsquelleAutor James | 2011-07-22

7 Kommentare

  1. 240
    from datetime import datetime
    startTime = datetime.now()
    
    #do something
    
    #Python 2: 
    print datetime.now() - startTime 
    
    #Python 3: 
    print(datetime.now() - startTime)
    • Nuevo en Python, trabajando en 3.6.1. FYI datetime ya no tiene ahora un atributo.
    • funciona si usted hace from datetime import datetime, no sólo import datetime (acaba de confirmar en Python 3.6.4).
  2. 121

    Hacer ejecutar el script desde la línea de comandos en Linux o UNIX? En ese caso, sólo podría utilizar

    time ./script.py
    • time -p ./script.py -p bandera para la tubería
  3. 55
    import time
    start = time.time()
    
    fun()
    
    # python 2
    print 'It took', time.time()-start, 'seconds.'
    
    # python 3
    print('It took', time.time()-start, 'seconds.')
    • La última línea, probablemente debería leer print('It took {0:0.1f} seconds'.format(time.time() - start)) en python 3.x.
    • Yo estaba trabajando en python2.7. Te dejo el comentario aquí, sin embargo, para que la gente pueda ver ambas versiones.
  4. 14

    Lo que suele hacer es utilizar clock() o time() de la time de la biblioteca. clock medidas intérprete de tiempo, mientras que time medidas de tiempo del sistema. Advertencias se pueden encontrar en la docs.

    Por ejemplo,

    def fn():
        st = time()
        dostuff()
        print 'fn took %.2f seconds' % (time() - st)

    O, alternativamente, puede utilizar timeit. A menudo uso la time enfoque debido a lo rápido que puede golpear, pero si eres de temporización de un aislamiento capaz de pieza de código, timeit viene muy bien.

    De la timeit docs,

    def test():
        "Stupid test function"
        L = []
        for i in range(100):
            L.append(i)
    
    if __name__=='__main__':
        from timeit import Timer
        t = Timer("test()", "from __main__ import test")
        print t.timeit()

    A continuación, convertir a los minutos, usted puede simplemente dividir por 60. Si desea que la secuencia de comandos de tiempo de ejecución en un formato fácilmente legible, ya sean segundos o días, usted puede convertir a un timedelta y str es:

    runtime = time() - st
    print 'runtime:', timedelta(seconds=runtime)

    y que voy a imprimir algo de la forma [D day[s], ][H]H:MM:SS[.UUUUUU]. Usted puede comprobar fuera de la timedelta docs.

    Y por último, si lo que en realidad después de crear el perfil de tu código Python pone a disposición de la perfil de la biblioteca así.

  5. 14
    import time 
    
    startTime = time.time()
    # Your code here !
    print ('The script took {0} second !'.format(time.time() - startTime))

    El código anterior funciona para mí no hay problema !

  6. 12
    import sys
    import timeit
    
    start = timeit.default_timer()
    
    #do some nice things...
    
    stop = timeit.default_timer()
    total_time = stop - start
    
    # output running time in a nice format.
    mins, secs = divmod(total_time, 60)
    hours, mins = divmod(mins, 60)
    
    sys.stdout.write("Total running time: %d:%d:%d.\n" % (hours, mins, secs))
    • el impreso para 50 segundos es «0:0:50»
  7. 10

    Utilizar el timeit módulo. Es muy fácil. Ejecutar su example.py archivo por lo que es activo en el interprete de Python, ahora debería ser capaz de llamar a la función en el shell. Probarlo para comprobar que funciona

    >>>fun(input)
    output

    Bueno, que funciona, ahora importación timeit y establecer un temporizador

    >>>import timeit
    >>>t = timeit.Timer('example.fun(input)','import example')
    >>>

    Ahora tenemos nuestra temporizador configurado podemos ver cuánto tiempo se tarda

    >>>t.timeit(number=1)
    some number here

    Y hay que ir, se le dirá cuántos segundos (o menos) se llevó a ejecutar esa función. Si se trata de una simple función, a continuación, se puede aumentar a t.timeit(número=1000) (o cualquier número!) y luego dividir el resultado por el número para obtener el promedio.

    Espero que esto ayude.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea