本篇文章主要介绍在使用 Python 过程中涉及到“时间”的一些处理笔记,包括获取格式化后的当前时间、实时观察任务完成的进度等等。
一、获取当前系统时间
第一种:导入 datetime 模块
1 | import datetime |
当然这种获取办法得到的时间格式往往不符合我们的阅读习惯,可以通过strftime()
函数来格式化当前时间,Python 中时间日期格式化符号有
1 | %y 两位数的年份表示(00-99) |
比如,格式化当前时间为年-月-日
1 | "%Y %B %d") datetime.now().strftime( |
如果想比较完整的本地日期和时间表示
1 | "%c") datetime.now().strftime( |
第二种:导入 time 模块
time
当前时间的 Unix 时间戳(注:Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数)
1 | import time |
你也可以将 Unix 时间戳格式化为易读的格式
1 | import time |
获得当前时间前后某一时刻,比如在执行实时任务中,有时需要规定在每秒时间间隔内抓取一次数据,可以通过timedelta
来实现。下面的例子中,end_time
比begin_time
是要大一秒的
1 | begin_time = datetime.datetime.now() |
二、延迟进程调用
time
模块有一个推迟调用线程time.sleep()
的功能特别实用,括号内的数字表示进程挂起的时间(秒),比如
1 | #!/usr/bin/python |
三、计算程序运行时间
1 | #!/usr/bin/python |
四、显示任务完成进度
有的时候运行程序执行循环计算会等待较长的时间,这时如果有一个实时的可视化进度条那就再好不过了。在这里要介绍 Python 中两个非常有趣的库,分别是 tqdm 和 pyprind,它们可以帮助我们了解任务完成的状态。
tqdm
1 | from tqdm import tqdm |
pyprind
然后是 pyprind
,相比 tqdm
,pyprind
允许自定义的空间就大了很多,进度可以有进度条和百分比两种形式,程序运行完成还可以得到 CPU 和内存使用情况报告等等。
1 | for i in pyprind.prog_bar(range(10)): |
1 | for i in pyprind.prog_percent(range(10)): |
1 | bar = pyprind.ProgBar(10, monitor=True, title='Test') |
等待程序运行完了之后,pyprind
会打印出程序开始、结束时间以及 CPU
和内存占用的情况,一目了然。
1 | Test |
关于 pyprind 还有很多好玩的玩法,有兴趣的读者可以参考这个链接