Python计算代码段的时间

本文介绍了Python中计算程序段执行时间的三种方法:使用time模块的time()和clock()函数,以及使用timeit模块的Timer类。time()和clock()在程序运行时间很短时可能不准确,而timeit模块提供了更精确的计时功能,适用于性能测试。通过创建Timer对象并调用timeit()和repeat()方法,可以轻松测量代码执行的耗时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python计算程序段时间

在百度知道里看到“Python里怎么计算程序段执行的时间”,我也好奇,从C语言的思维,我首先想到是time,我就百度time,发现Python自带的time模块,里面有两个函数可以粗略的计算:time()和clock()函数

1、Time函数返回的是当前戳函数,所以只需只要

<span style="font-family:Microsoft YaHei;font-size:14px;">import time
def fun(x):
   sum = 0;
    i= 1;
   while(i < x):
       sum += i
       i += 1
return sum
 
x1 = time.time()
fun(10000)
x2 = time.time()
print x2-x1</span>

2、clock函数比较直接, 该函数有两个功能:
 
在第一次调用的时候,返回的是程序运行的实际时间;
 
以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔

如下例子

<span style="font-family:Microsoft YaHei;font-size:14px;">import time
if __name__ == '__main__':
   time.sleep(1)
   print "clock1:%s" % time.clock()
   time.sleep(1)
   print "clock2:%s" % time.clock()
   time.sleep(1)
print"clock3:%s" % time.clock()</span>


输出:
clock1:3.35238137808e-006

clock2:1.00004944763
clock3:2.00012040636

 

查看上面的结果,会发现上面两种方法,如果程序段运行时间很短的话,就会计算不准确的。Python还是比较人性化的,知道我们经常需要计算程序段的时间来判断效率,所以它还有个timeit模块,这个模块可以说是专门为了计算程序段的时间来的,你在命令行中写下:help(timeit)就会发现,此模块很简单,就一个Timer类,初始化好Timer类,其利用timeitrepeat函数就很容易计算了。

__init__(stmt="pass",setup="pass", timer=default_timer)

      定义了接受两个参数的 Timer 类。两个参数都是字符串。第一个参数是你要计时的语句,这里你计时的是以'Pilgrim'参数调用 Soundex 函数。传递给 Timer 的第二个参数是为第一个参数语句构建环境的导入语句。stmt 是执行语句,setup 是导入执行语句环境)

print_exc(file=None)

timeit(number=default_number)

    返回测试所用秒数,number 是每个测试中调用被计时语句的次数

repeat(repeat=default_repeat, number=default_number)

    返回测试所用秒数列表,repeat 是重复整个测试的次数,number 是每个测试中执行语句的次数

只要有了Timer对象,就很容易计算Timer的时间了,如下:

>>>import timeit

#执行命令

>>>t2 = timeit.Timer('x=range(1000)')

#显示时间

>>>t2.timeit()

10.620039563513103

#执行命令

>>>t1 = timeit.Timer('sum(x)', 'x = (i for i in range(1000))')

#显示时间

>>>t1.timeit()

0.1881566039438201

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值