python - 如何使用 Python 的 timeit 为代码段计时以测试性能?

标签 python testing timeit database-tuning

我有一个可以正常工作的 python 脚本,但我需要编写执行时间。我用谷歌搜索应该使用 timeit但我似乎无法让它工作。

我的 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()time.clock()在你想要计时的 block 之前和之后。

import time

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

total = t1-t0

此方法不如 timeit (它不会平均几次运行)但它很简单。

time.time()(在 Windows 和 Linux 中)和 time.clock()(在 Linux 中)对于快速函数来说不够精确(你得到 total = 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().

关于python - 如何使用 Python 的 timeit 为代码段计时以测试性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2866380/

相关文章:

python - 如何将 timeit 与包含 EOL 字符的命令一起使用?

python - 相当于 Go 中的 Python string.format?

python - 我可以用 Nose 嵌套测试用例吗?

python - 如何从包含类定义的 .py 文件中获取属性名称

java - 如何获取 *-tests.jar 以使用 AWS 设备农场配置 Appium?

javascript - 如何测试 REST API + 客户端 MVC 应用程序?

python - timeit.timer 在我自己的函数中使用它与从命令行调用它时给出截然不同的结果

python - 将 lambda 函数作为变量传递给 timeit 中的另一个函数

python - 将月份列转换为行并聚合其下的其他列

python - 使用 Nginx 在 Debian9 上安装 Let's encrypt/Certbot