Python中的时间测量脚本

6 投票
3 回答
13075 浏览
提问于 2025-04-17 12:16

我从一个程序员朋友那里得到了以下脚本:

    from time import *
    start = strptime(asctime())
    end = strptime(asctime())
    print 'you took %i minutes' % (end[4] - start[4])

你可能已经知道,这个脚本是用来测量第三行和第四行之间的时间。不过,它似乎是以分钟为单位来测量的。我想知道怎么才能把它改成以秒为单位测量,并且保留至少一位小数(比如7.4秒)。

另外,我还想增加一个功能。假设脚本在运行时,程序会让我输入一个单词。在我输入完后,我需要按下回车键来退出程序,并测量从我第一次按键到我按下回车的这段时间。我该怎么做才能测量这个时间呢?

3 个回答

1

如果你想优化一个Python网络服务的调用,可以尝试以下方法。

import time 

在函数的开始部分,

 start = time.time()

在这一行放上(540是行号),

    l540 = time.time()
    print("--------l541 ------------")
    print(l540 - start)

在下一行放上(608是行号),

  l608 = time.time()
  print("-------- 609 ------------")
  print(l608 - l540)

你可以添加任意多的行号,它会告诉你程序具体在哪些地方花了时间。

2

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序里使用它。这个过程就像是从冰箱里拿食材,然后用这些食材做饭。

当我们提到“数据结构”时,可以把它想象成一个容器,用来存放这些食材。不同的数据结构就像不同的容器,有的适合存放液体,有的适合存放固体。选择合适的数据结构可以让我们的程序运行得更快、更有效。

在编程中,常见的数据结构有数组、链表、栈和队列等。数组就像一个排好队的盒子,里面可以放很多相同类型的东西;链表则像是一串珠子,每个珠子都可以指向下一个珠子;栈就像是一个盘子,最后放进去的东西会最先拿出来;而队列就像是排队买票,先到的人先得到服务。

理解这些基本概念后,我们就能更好地选择和使用数据结构,让我们的程序更加高效。

#source: http://docs.python.org/library/timeit.html
def test():
    """Stupid test function"""
    L = []
    for i in range(100):
        L.append(i)

if __name__ == '__main__':
    from timeit import Timer
    t = Timer("test()", "from __main__ import test")
    print t.timeit()
22

首先,我建议不要使用 import *,因为这被认为是不好的编程习惯。你可以使用 time.time() 来获取更精确的时间:

>>> import time
>>> start = time.time()
>>> end = time.time()
>>> end - start
5.504057168960571

你也可以使用 datetime.datetime.now()

撰写回答