如何使用 Python 的 timeit 对代码段进行计时以测试性能?

2024-03-01

我有一个 python 脚本,它可以正常工作,但我需要编写执行时间。我已经用谷歌搜索过我应该使用timeit https://docs.python.org/2/library/timeit.html但我似乎无法让它发挥作用。

我的 Python 脚本如下所示:

import sys
import getopt
import timeit
import random
import os
import re
import ibm_db
import time
from string import maketrans
myfile = open("results_update.txt", "a")

for r in range(100):
    rannumber = random.randint(0, 100)

    update = "update TABLE set val = %i where MyCount >= '2010' and MyCount < '2012' and number = '250'" % rannumber
    #print rannumber

    conn = ibm_db.pconnect("dsn=myDB","usrname","secretPWD")

for r in range(5):
    print "Run %s\n" % r        
    ibm_db.execute(query_stmt)
 query_stmt = ibm_db.prepare(conn, update)

myfile.close()
ibm_db.close(conn)

我需要的是执行查询并将其写入文件所需的时间results_update.txt。目的是使用不同的索引和调优机制测试我的数据库的更新语句。


您可以使用time.time() https://docs.python.org/3/library/time.html#time.time or time.clock() https://docs.python.org/3/library/time.html#time.clock在您想要计时的块之前和之后。

import time

t0 = time.time()
code_block
t1 = time.time()

total = t1-t0

这种方法并不像timeit https://docs.python.org/3/library/timeit.html(它不会平均几次运行)但它很简单。

time.time()(在 Windows 和 Linux 中)和time.clock()(在 Linux 中)对于快速函数来说不够精确(总计 = 0)。在这种情况下,或者如果您想平均几次运行所用的时间,您必须多次手动调用该函数(正如我认为您已经在示例代码中所做的那样,并且当您设置其值时, timeit 会自动执行)number争论)

import time

def myfast():
   code

n = 10000
t0 = time.time()
for i in range(n): myfast()
t1 = time.time()

total_n = t1-t0

在 Windows 中,正如 Corey 在评论中所说,time.clock()具有更高的精度(微秒而不是秒)并且优于time.time().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Python 的 timeit 对代码段进行计时以测试性能? 的相关文章

随机推荐