【问题标题】:datetime.now() vs time.perf_counter(): which one to use to find execution timesdatetime.now() vs time.perf_counter():用哪一个来查找执行时间
【发布时间】:2021-12-05 11:31:12
【问题描述】:

最近发现这个问题:

Find out time it took for a python script to complete execution

投票最高的答案表明,为了计时执行,我应该使用datetime.now() 调用中的差异。我见过有人使用time.time(),但从来没有为此目的使用datetime.now()This video5:30 建议使用time.perf_counter()(在任何答案中都没有提到,所以I added it)。

使用datetime.now() 是否等同于使用time.perf_counter(),输出具有更好的人类可读性,还是有一些注意事项?

【问题讨论】:

    标签: python time


    【解决方案1】:

    我相信以下方法会给你非常相似的结果:

    from datetime import datetime
    datetime_start = datetime.now()
    # whatever process
    datetime_end = datetime.now()
    total_time_datetime = datetime_end - datetime_start
    
    import time
    time_start = datetime.perf_counter()
    # whatever process
    time_end = datetime.perf_counter()
    total_time_time = time_end - time_start
    

    total_time_datetime 输出一个带 6 个小数点的日期时间对象,而 total_time_time 输出一个带 14 个小数点的浮点数。然后,我敢打赌,时间方法会更准确一些,尽管它对于大多数度量可能并不明显。

    时间方法也可以防止手动修改服务器时间,或夏令时更改(后者可能可以使用 datetime.utcnow() 来避免)。

    另一方面,日期时间对象与时间的浮点对象不同,它允许您应用多种方法来获取/提取不同的时间(微秒、秒、分钟...)。例如 datetime 对象有方法 total_seconds() 将给出一个浮点数(作为时间):

    (datetime_end - datetime_start).total_seconds()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2021-10-10
      • 2020-07-16
      • 1970-01-01
      相关资源
      最近更新 更多