我想要的是开始在我的代码中的某个地方计算时间,然后获得通过的时间,以测量执行少量功能所花费的时间.我认为我使用的是timeit模块错误,但文档对我来说只是让人困惑.
import timeit
start = timeit.timeit()
print("hello")
end = timeit.timeit()
print(end - start)
Run Code Online (Sandbox Code Playgroud) 我理解的是什么timeit
,但我不知道如何在我的代码中实现它.
我如何比较两个功能,说insertion_sort
和tim_sort
,用timeit
?
在Python中创建新空列表的最佳方法是什么?
l = []
Run Code Online (Sandbox Code Playgroud)
要么
l = list()
Run Code Online (Sandbox Code Playgroud)
我问这个是因为两个原因:
我有一个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)
我需要的是执行查询并将其写入文件所需的时间 …
我正在玩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语句需要多长时间,所以我在线查看并发现标准库提供了一个名为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新手,我不完全理解它所有的范围问题,但我不知道为什么这个片段不起作用.有什么想法吗?
我正在尝试计算一些代码.首先我用了一个时间装饰器:
#!/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 请求模块来加载部分.
问题是,它没有内置功能来衡量获得完整响应所需的时间.为此,我想我会使用该timeit
模块.
我不确定的是,如果我像这样运行timeit:
t = timeit.Timer("requests.get('http://www.google.com')", "import requests")
Run Code Online (Sandbox Code Playgroud)
我是否真的在测量响应到达的时间,还是构建,发送,接收等请求所需的时间?我猜我可以忽略那个超时时间,因为我正在测试网络延迟很长时间(~700ms)?
有没有更好的方法以编程方式执行此操作?
我正在回答这个问题,我更喜欢这里的生成器表达并使用它,我认为它会更快,因为生成器不需要先创建整个列表:
>>> 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 ×10
timeit ×10
performance ×3
list ×2
time ×2
coding-style ×1
cpython ×1
delay ×1
measure ×1
networking ×1
profiling ×1
scope ×1
testing ×1
timing ×1