¿Tiempo de CPU de un progtwig de python?

Me gustaría cronometrar un fragmento de mi código, y me gustaría solo el tiempo de ejecución de la CPU (ignorando los procesos del sistema operativo, etc.).

He intentado time.clock (), parece demasiado impreciso y da una respuesta diferente cada vez. (En teoría, seguramente si lo ejecuto de nuevo para el mismo fragmento de código, ¿debería devolver el mismo valor?)

He jugado con el tiempo durante aproximadamente una hora. Esencialmente, lo que lo mata es el proceso de “configuración”, tengo que importar alrededor de 20 funciones, lo que no es práctico, ya que prácticamente estoy reescribiendo mi código en la sección de configuración para intentarlo y usarlo.

Los perfiles de perfil son cada vez más atractivos, pero ¿devuelven el tiempo de CPU? También, un punto menor: genera demasiada información. ¿Hay alguna manera de obtener la información de salida en un archivo txt o .dat para que pueda leerlo?

Aclamaciones

    OS: Progtwig de Ubuntu: python 2.7

    Parece que está buscando una manera de sincronizar el tiempo de ejecución en todo el proceso , lo mejor que puede hacer es usar timeit.default_timer () que ofrece la función time.clock () o time.time () más precisa disponible en La plataforma actual, pero es tiempo de todo el sistema , lo que significa que otros procesos pueden interferir con sus mediciones.

    Aquí está la información de los documentos de timeit.default_timer ():

    Defina un temporizador predeterminado, de una manera específica de la plataforma. En Windows, time.clock () tiene granularidad de microsegundos, pero la granularidad de time.time () es 1/60 de segundo. En Unix, time.clock () tiene una granularidad de 1/100 de segundo, y time.time () es mucho más preciso. En cualquier plataforma, default_timer () mide el tiempo del reloj de pared, no el tiempo de CPU . Esto significa que otros procesos que se ejecutan en la misma computadora pueden interferir con el tiempo.

    Debe intentar probar los c-módulos que podrían tener acceso a diferentes apis de temporización.


    La mejor manera de hacerlo es mediante time.process_time (), que solo está disponible en Python 3.3 y superior , aquí está la información de la documentación:

    Devuelva el valor (en segundos fraccionarios) de la sum del sistema y el tiempo de CPU del usuario del proceso actual. No incluye el tiempo transcurrido durante el sueño. Es todo el proceso por definición. El punto de referencia del valor devuelto no está definido, por lo que solo la diferencia entre los resultados de llamadas consecutivas es válida.

    En lugar de time.clock() , use timeit.default_timer() ; Utiliza la opción más precisa para tu plataforma. Para Ubuntu, por ejemplo, esto usará time.time() lugar.

    Cuando use timeit , cree una función de configuración que luego pueda reutilizar para timeit . Sí, esto parece un poco de trabajo, pero garantiza que usted cronometre lo que realmente quería medir y no incluya el código de configuración en la sección de medición de tiempo crítico.