阅读 13

说说 Python 的 time 模块

Python 内置的 time 模块可以让 Python 程序读取系统时钟的当前时间。

1 time.time() 函数

Unix 纪元指的是 1970 年 1 月 1 日 0 点,即协调世界时(UTC)。 time.time()函数会返回自Unix 纪元那一刻以来的秒数,是一个浮点值,这个数字称为 UNIX 纪元时间戳。

由于英文(CUT,Coordinated Universal Time)和法文(TUC)的缩写不同,作为妥协,简称 UTC。

UNIX 纪元时间戳可以用于剖析代码性能,也就是测量一段代码的运行时长。在代码块开始时调用 time.time() ,并在代码结束时再次调用,就可以用第二个时间戳减去第一个,得到这部分代码块的运行时长。

import time
logging.basicConfig(level=logging.DEBUG, format='%(levelname)s - %(message)s')

def factorial(num):
    '''
    计算阶乘
    :param num:
    :return:
    '''
    factorial = 1
    for i in range(1, num + 1):
        factorial = factorial * i
    return factorial

start_time = time.time()
result = factorial(100000)
end_time = time.time()

logging.info('计算结果有 %s 位.' % (len(str(result))))
logging.info('计算过程共耗费 %s 秒.' % (end_time - start_time))
复制代码

运行结果:

INFO - 计算结果有 456574 位.
INFO - 计算过程共耗费 3.1611809730529785 秒.
复制代码

2 time.sleep() 函数

如果需要让程序暂停一下,可以调用 time.sleep()函数,该函数接收希望程序暂停的秒数作为入参。

for i in range(3):
    logging.info('嘀……')
    time.sleep(0.5)
    logging.info('嗒.')
    time.sleep(0.5)
复制代码

运行结果:

INFO - 嘀……
INFO - 嗒.
INFO - 嘀……
INFO - 嗒.
INFO - 嘀……
INFO - 嗒.
复制代码

time.sleep() 函数会阻塞,直到传递给 time.sleep() 的秒数流逝掉才会继续执行。