打印状态更新没有循环迭代(python)

时间:2017-09-17 19:12:50

标签: python progress status

我有一个非常简单的函数,它只是一个数据写入列表,但每次写入需要5-10秒,因此该函数需要大约一个小时才能运行。由于没有循环,因此没有迭代变量。更新用户进度的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您是否考虑过logging模块?您可以创建不同类型的处理程序来处理日志消息。这是一个简单的例子,但一般的想法是你可以把记录消息放在你的脚本中写入文件,打印到控制台的流,或其他东西。

import datetime
import logging
import time

logger = logging.getLogger('a_name')
logger.setLevel(logging.DEBUG)
sh = logging.StreamHandler()  # prints to console
logger.addHandler(sh)

 with open('/tmp/test_file.txt', 'w') as f:
    logger.info('beginning writing file at ' + str(datetime.datetime.now()))
    time.sleep(30)  # this is a proxy for doing some file writing
    logger.info('the time now is' + str(datetime.datetime.now()))
    ...
    loggering.info('file done being written')

您可能希望查看格式化日志消息的信息,这样您就不必像我一样以优雅的方式包含datetime str。