python 3日期时间差(以微秒为单位),为长时间操作提供错误答案

bkhjykvo  于 2022-11-19  发布在  Python
关注(0)|答案(1)|浏览(129)

我正在从一个大小为6000的二叉搜索树(排序为单侧树)中删除3000个元素。我需要计算完成所有删除所需的时间
是我干的

bst2 = foo.BinarySearchTree() #init
    insert_all_to_tree(bst2,insert_lines) #insert 6000 elements
    start = datetime.now() #start time
    for idx, line in enumerate(lines):
      bst2.delete(line)  #deleting
      if (idx%10 == 0):
        print("deleted ", (idx+1), "th element - ", line)
    end = datetime.now()  #completion time
    duration = end - start 
    print(duration.microseconds) #duration in microseconds

我得到的答案是761716微秒,这甚至不到一分钟,而我的实际代码运行了大约5小时。我期望的范围是10^9 - 10^10。我甚至检查了python中允许的最大整数,看看它是否与此相关,但显然这不是问题所在。
为什么我得到了一个错误的答案?

ne5o7dgx

ne5o7dgx1#

datetime.now()返回一个datetime,所以用它做数学运算是行不通的,你可以使用time.time()(Python〈v3.3),time.perf_counter()(Python v3.3到v3.7)或者time.perf_counter_ns()(Python〉v3.7)。
time.time()time.perf_counter()都返回float,并且time.perf_counter_ns()返回int

相关问题