Как записать время настенных часов и процессорное время в переменной Python, используя встроенное в bash время? - PullRequest
0 голосов
/ 19 июня 2019

Я работаю над скриптом Python, который будет запускаться в командной строке. Идея состоит в том, чтобы получить команду от пользователя, запустить ее, а затем предоставить время настенных часов и время ЦП для команды, предоставленной пользователем. Смотрите код ниже.

#!/usr/bin/env python 
import os
import sys

def execut_cmd(cmd_line):
    utime = os.system('time '+cmd_line)
    # Here I would like to store the wall-clock time in the Python variable 
    # utime.
    cputime = os.system('time '+cmd_line)
    # Here the CPU time in the cputime variable. utime and cputime are going to 
    # be used later in my Python script. In addition, I would like to silence the 
    # output of time in the screen.

execut_cmd(sys.argv[1]) 
print ('Your command wall-clock time is '+utime)
print ('Your command cpu time is '+ cputime)

Как мне это сделать? Кроме того, если есть лучший метод, чем использование «времени», я готов попробовать.

1 Ответ

5 голосов
/ 19 июня 2019

С Python Документация для настенного времени :

... В Windows time.clock () имеет микросекундную гранулярность, но гранулярность time.time ()1/60 секунды.В Unix time.clock () имеет 1/100 доли детализации, а time.time () гораздо точнее.На любой платформе default_timer () измеряет время настенных часов, а не время процессора.Это означает, что другие процессы, выполняющиеся на том же компьютере, могут влиять на синхронизацию.

Для настенного времени вы можете использовать timeit.default_timer (), который получает таймер с лучшей гранулярностью, описанной выше.

В Python 3.3 и выше вы можете использовать time.process_time () или time.process_time_ns ().Ниже запись документации для метода process_time:

Возвращает значение (в долях секунды) суммы системного и пользовательского процессорного времени текущего процесса.Не включает время, прошедшее во время сна.Это процесс по определению.Контрольная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов.

...