我需要测量程序的某些部分的时间(不是用于debugging,而是作为输出中的一个function)。 精确度很重要,因为总时间只有一秒钟的几分之一。 当我遇到timeit时,我将使用时间模块 ,它声称避免了一些测量执行时间的常见陷阱 。 不幸的是,它有一个糟糕的界面,把一个string作为input,然后eval的。 那么,我是否需要使用这个模块来准确地测量时间,还是将时间足够? 它指的是什么陷阱? 谢谢
我正在尝试一些代码。 首先我使用了定时装饰器: #!/usr/bin/env python import time from itertools import izip from random import shuffle def timing_val(func): def wrapper(*arg, **kw): '''source: http://www.daniweb.com/code/snippet368.html''' t1 = time.time() res = func(*arg, **kw) t2 = time.time() return (t2 – t1), res, func.__name__ return wrapper @timing_val def time_izip(alist, n): i = iter(alist) return [x for x in izip(*[i] * n)] @timing_val […]
我试图找出需要多less时间来执行一条Python语句,所以我在网上查找,发现标准库提供了一个名为timeit的模块,声称可以做到这一点: import timeit def foo(): # … contains code I want to time … def dotime(): t = timeit.Timer("foo()") time = t.timeit(1) print "took %fs\n" % (time,) dotime() 但是,这会产生一个错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in dotime File "/usr/local/lib/python2.6/timeit.py", line 193, in timeit timing = self.inner(it, […]
我正在玩timeit,注意到对一个小string做一个简单的列表理解要比在一个小单string列表上做同样的操作花费的时间要长。 任何解释? 这几乎是时间的1.35倍。 >>> from timeit import timeit >>> timeit("[x for x in 'abc']") 2.0691067844831528 >>> timeit("[x for x in ['a', 'b', 'c']]") 1.5286479570345861 什么发生在一个较低的水平,这是由此造成的?
我有一个python脚本,它的工作原理就像它应该但我需要写的执行时间。 我GOOGLE了,我应该使用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'" […]
我理解什么时间的概念,但我不知道如何在我的代码中实现它。 我怎样才能比较两个函数,说tim_sort和tim_sort , timeit ?