记录python脚本停止的时间?

时间:2014-12-06 13:44:09

标签: python time

我想记录(进入txt文件)Python脚本停止的时间。这个问题与逻辑有关:

如果它停止了,它必须知道它什么时候 - 但是如果它关闭了,它怎么知道呢?在它发生之前,它必须在大约1秒前知道关闭。这让我进入下一阶段:

进程"python.exe"的监视程序,但由于我想在其中使用它的上下文而无法工作:我想知道我的计算机何时通过Python脚本关闭。

这样做的目的是记录关机(睡眠)并重新启动/唤醒计算机(事件查看器似乎没有记录所有这些,所以我说,嘿,为什么不这样做? )

2 个答案:

答案 0 :(得分:3)

对于常规终止,我建议使用atexit模块: https://docs.python.org/2/library/atexit.html

您可以像这样写下脚本终止的时间:

import datetime
import atexit

def leaving():
   open("my.log", "w").write("I was closed at %s" % datetime.datetime.now())

atexit.register(leaving)

另一种方法是使用装饰器,如下所示:

import atexit

@atexit.register
def leaving():
    import datetime
    open("my.log", "w").write("I was closed at %s" % datetime.datetime.now())

答案 1 :(得分:1)

finally块中的任何内容都可以保证运行,因此您可以执行此操作,只要您不会捕获SystemExitBaseException,这会导致关闭信号或键盘中断:

import logging
import time

logger = logging.getlogger(__name__)

def process():
    '''this can be anything, sleep is probably least resource consumptive'''
    while 1:
        time.sleep(5)

def main():
    try:
        process()
    finally: # guaranteed to run, so long as Python gets an error, 
             # shutdown signal or keyboard interrupt.
        logger.info('shutdown at {0}'.format(datetime.datetime.now()))

if __name__ == '__main__':
    main()