У меня есть сценарий, который выводит время, затраченное на команду, следующим образом:
real 112m5.559s
user 0m0.002s
sys 0m0.000s
Я разбираю вывод скрипта с помощью python. Я хочу представить реальное время в секундах. У меня есть проанализированный вывод в переменной real_time
.
Вот как я сейчас конвертирую его в формат секунд.
def gettime(x):
m,s = map(float,x[:-1].split('m'))
return 60 * m + s
real_time = "112m5.559s"
gettime(real_time)
Есть ли другой способ сделать это? (Вероятно, один лайнер, который более эффективен)
timeit
проверяет ответы, приведенные ниже:
import pandas as pd
def gettime(x):
m,s = map(float,x[:-1].split('m'))
return 60 * m + s
real_time = "112m5.559s"
%timeit gettime(real_time)
%timeit int(real_time.split("m")[0]) * 60 + float(real_time.split("m")[1][:-1])
%timeit pd.to_timedelta(real_time).total_seconds()
%timeit sum(float(x) * 60 ** i for i, x in enumerate(reversed(real_time[:-1].split('m'))))
Выход
1.27 µs ± 55.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
1.39 µs ± 104 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
15.8 µs ± 714 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
2.63 µs ± 446 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
Текущий метод кажется эффективным. @ bigbounty a > близок к тому, чтобы быть одновременно эффективным и однострочным.
time
, я считаю, что это можно сделать с переменнойTIMEFORMAT
env, но за счет потери информации о пользователе и времени системы - person Saurabh P Bhandari   schedule 21.07.2020