我可以在一个函数中两次调用当前时间吗?

时间:2019-10-29 11:35:57

标签: python datetime time

这是我的代码:

import datetime, time 
def function():
    start = datetime.now()
    ...
    stop = datetime.now()
    result = (stop - start).total_seconds()
    return result

但是当我执行它时,它返回0 ...为什么呢

3 个答案:

答案 0 :(得分:0)

按原样,该代码根本不会运行,也不返回任何内容。相反,我得到了一个属性错误:

  

AttributeError:模块'datetime'没有属性'now'

当我修复您的代码(from datetime import datetime)并运行它时,结果为

  

0:00:00

可能是小时,分钟和秒。即在开始和停止之间使用... as the only command。 如果...部分的时间小于一毫秒,则可能无法检测到它。我怀疑您在评论中指出需要50毫秒(另请参见下文)。

  

我可以在一个函数中两次调用当前时间吗?

是:

import time
from datetime import datetime
def function():
    start = datetime.now()
    time.sleep(.001)
    stop = datetime.now()
    result = stop - start
    return result

print(function())
  

0:00:00.001994

如您所见,在1毫秒的睡眠时间下,测得的时间偏离了约100%,并且时间不再精确。

答案 1 :(得分:0)

如果您不需要日期,则可以运行以下命令:

import time

def function():
    start_time = time.time()
    time.sleep(5)
    end_time = time.time()
    print(f'Completed in: {end_time - start_time} seconds')

function()

答案 2 :(得分:0)

它在Linux(5.3)下为我做正确的事情,即:

from datetime import datetime
(datetime.now() - datetime.now()).total_seconds()

评估为-8e-06,这很好。因此,我认为在Windows系统下使用的计时器精度不是很高。我建议对这些短时间使用time.perf_counter()datetime更适合您在关心诸如月之类的晦涩的人类事物时使用。

例如

from time import perf_counter

perf_counter() - perf_counter()

给我大约-2.8e-7,所以我们也将通话时间减少了几百纳秒。