标签: timeit

测量Python中经过的时间?

我想要的是开始在我的代码中的某个地方计算时间,然后获得通过的时间,以测量执行少量功能所花费的时间.我认为我使用的是timeit模块错误,但文档对我来说只是让人困惑.

import timeit

start = timeit.timeit()
print("hello")
end = timeit.timeit()
print(end - start)
Run Code Online (Sandbox Code Playgroud)

python performance timeit measure

1031
推荐指数
32
解决办法
116万
查看次数

如何使用timeit模块

我理解的是什么timeit,但我不知道如何在我的代码中实现它.

我如何比较两个功能,说insertion_sorttim_sort,用timeit

python time timeit

323
推荐指数
10
解决办法
27万
查看次数

在Python中创建一个空列表

在Python中创建新空列表的最佳方法是什么?

l = [] 
Run Code Online (Sandbox Code Playgroud)

要么

l = list()
Run Code Online (Sandbox Code Playgroud)

我问这个是因为两个原因:

  1. 技术原因,哪个更快.(创建一个类导致开销?)
  2. 代码可读性 - 哪一个是标准惯例.

python performance coding-style list timeit

229
推荐指数
3
解决办法
64万
查看次数

如何使用Pythons timeit计算代码段以测试性能?

我有一个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)
Run Code Online (Sandbox Code Playgroud)

我需要的是执行查询并将其写入文件所需的时间 …

python testing timeit database-tuning

140
推荐指数
6
解决办法
16万
查看次数

为什么迭代一个小字符串比一个小列表慢?

我正在玩timeit并注意到对一个小字符串做一个简单的列表理解比在一个小的单个字符串列表上做同样的操作要花费更长的时间.任何解释?这几乎是1.35倍的时间.

>>> from timeit import timeit
>>> timeit("[x for x in 'abc']")
2.0691067844831528
>>> timeit("[x for x in ['a', 'b', 'c']]")
1.5286479570345861
Run Code Online (Sandbox Code Playgroud)

在较低的水平上发生了什么导致这种情况?

python performance cpython timeit python-internals

132
推荐指数
2
解决办法
1万
查看次数

使用Python的timeit来定义"全局名称'foo'"

我试图找出执行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()
Run Code Online (Sandbox Code Playgroud)

但是,这会产生错误:

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, self.timer)
  File "<timeit-src>", line 6, in inner
NameError: global name 'foo' is not defined
Run Code Online (Sandbox Code Playgroud)

我还是Python新手,我不完全理解它所有的范围问题,但我不知道为什么这个片段不起作用.有什么想法吗?

python scope timeit

83
推荐指数
4
解决办法
4万
查看次数

timeit与时间装饰器

我正在尝试计算一些代码.首先我用了一个时间装饰器:

#!/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
def time_indexing(alist, n):
    return [alist[i:i + n] for i in range(0, len(alist), n)]

func_list = [locals()[key] for key in locals().keys()
             if callable(locals()[key]) and key.startswith('time')]
shuffle(func_list)  # …
Run Code Online (Sandbox Code Playgroud)

python timing timeit

55
推荐指数
6
解决办法
5万
查看次数

准确测量python函数所需的时间

我需要测量程序某些部分的时间(不是用于调试,而是作为输出中的一个特性).准确性很重要,因为总时间只有几分之一秒.

当我遇到timeit时,我打算使用时间模块,声称可以避免测量执行时间的一些常见陷阱.不幸的是,它有一个糟糕的接口,将一个字符串作为输入然后进行评估.

那么,我是否需要使用此模块准确地测量时间,或者时间是否足够?它指的是什么陷阱?

谢谢

python time profiling timeit

41
推荐指数
4
解决办法
3万
查看次数

使用Python请求测量网站加载时间

我正在尝试构建一个测试我的互联网连接延迟的工具,更具体地说是网站加载时间.我想过使用python 请求模块来加载部分.

问题是,它没有内置功能来衡量获得完整响应所需的时间.为此,我想我会使用该timeit模块.

我不确定的是,如果我像这样运行timeit:

t = timeit.Timer("requests.get('http://www.google.com')", "import requests")
Run Code Online (Sandbox Code Playgroud)

我是否真的在测量响应到达的时间,还是构建,发送,接收等请求所需的时间?我猜我可以忽略那个超时时间,因为我正在测试网络延迟很长时间(~700ms)?

有没有更好的方法以编程方式执行此操作?

python networking delay timeit python-requests

41
推荐指数
2
解决办法
6万
查看次数

列表理解与生成器表达式的奇怪时间结果?

我正在回答这个问题,我更喜欢这里的生成器表达并使用它,我认为它会更快,因为生成器不需要先创建整个列表:

>>> lis=[['a','b','c'],['d','e','f']]
>>> 'd' in (y for x in lis for y in x)
True
Run Code Online (Sandbox Code Playgroud)

Levon在他的解决方案中使用了列表理解,

>>> lis = [['a','b','c'],['d','e','f']]
>>> 'd' in [j for i in mylist for j in i]
True
Run Code Online (Sandbox Code Playgroud)

但是当我做这些LC的时间结果比生成器快时:

~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in (y for x in lis for y in x)"
    100000 loops, best of 3: 2.36 usec per loop
~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in [y for x in lis for y …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension list generator-expression timeit

34
推荐指数
3
解决办法
4605
查看次数