Какой лучший способ посчета времени работы программы?
У меня есть программа, которая в будущем должна запускаться с запуском компьютера и выключаться соответсвенно. Как фиксировать время при запуске, понятно, но как делать это перед выключением компьютера?
Программа на python.
Я думал может каждые 5 минут фиксировать время, а потом сравнивать последнее зафиксированное(которое будет свидетельствовать о выключении компьютера) и время нового запуска
Может есть способ разумнее это делать?
В интернетах не нагуглил, там все говорят о замере работы программы, которая обрабатывает значения и выключается, это не мой случай.
В linux можно выполнить скрипт по завершению, приостановке работы ОС. Например так askubuntu.com/questions/416299/execute-command-bef...
Но если компьютер просто вырубили, то данные потеряются. Тогда только выход - периодически фиксировать время.
Ровно тоже касается линуха = не нужно специальных команд для выключения, пользователь делает это штатными средствами. Мы только задаем что нужно при этом сделать
Просто пишите в лог время запуска программы и время завершения программы.
Если в логе встретится, что идет два запуска подряд - значит что-то ее прервало. По системному логу линукса или журналам винды можно будет посмотреть когда комп выключался и вычислить время.
Если нужно автоматизировать, пишите периодически текущее время во временной файл и сделайте простой воркэраунд, смотря насколько критично ловить время перед выключением.
bychok300: Тогда пишите периодически в отдельный файл current.tmp текущее время. При выходе из скрипта удаляйте current.tmp и в лог пишите нормальное время завершения.
При запуске скрипта, сперва проверяйте - если current.tmp существует, то в логе скорее всего есть только запись о старте, о завершении нет - дописываете завершение по времени из current.tmp и удаляете его, после чего скрипт выполняется дальше в штатном режиме.
p.s. Если делать грамотное решение, отлавливающее завершение ОС, один скрипт кроссплатформенно работать не будет, так как эксепшены в *nix и Windows разные, и подключать нужно библиотеки для одной или другой. Следовательно либо скрипт заметно усложняется, либо обходимся велосипедом.