我试图测量raw_queries(...)到目前为止的失败时间.我发现我应该使用timeit模块.问题是我不能(=我不知道如何)从环境中将参数传递给函数.
重要说明:在调用之前raw_queries,我们必须执行phase2()(环境初始化).
旁注:代码在Python 3中.
def raw_queries(queries, nlp):
""" Submit queries without getting visual response """
for q in queries:
nlp.query(q)
def evaluate_queries(queries, nlp):
""" Measure the time that the queries need to return their results """
t = Timer("raw_queries(queries, nlp)", "?????")
print(t.timeit())
def phase2():
""" Load dictionary to memory and subsequently submit queries """
# prepare Linguistic Processor to submit it the queries
all_files = get_files()
b = LinguisticProcessor(all_files)
b.loadDictionary()
# load the queries …Run Code Online (Sandbox Code Playgroud) 我有一个名为Python的函数func,我正在尝试使用它timeit.
func接受一个论证,f这也是一个函数.在我正在编写的程序中,它是一个lambda函数,但它也可以是一个定期定义的函数.重要的是该函数的源代码不可用func,所有可用的源代码都是对它的引用.
我正在做的事情:
def testTimingOfFunc(f):
time = timeit.timeit("package.func(f)", "from src import package")
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说f没有定义.
其他一切都正常.我打电话的时候:
testTimingOfFunc('lambda x:x**2')
Run Code Online (Sandbox Code Playgroud)
并将功能更改为:
def testTimingOfFunc(f):
time = timeit.timeit("package.func(" + str(f) + ")",
"from src import package")
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,所以我知道关于timeit功能的一切都很好.
这不是testTimingOfFunc有效的方式; 传入函数引用,而不是字符串.
我如何能够通过任何想法f作为参数传递给func在timeit?
我编写了一个脚本来对我们的本地集群进行一些排名顺序相关计算。计算涉及寻找两个阵列,X和Y长度5000-10000的,并提取量
all((X[i], Y[i]))
all((X[i], not Y[i]))
all((not X[i], Y[i]))
Run Code Online (Sandbox Code Playgroud)
数千次计算(因为我洗牌X/Y除其他外)。
我们的一个集群运行的是 python2.4,所以我将alls更改为numpy.alls。然而,我估计需要大约 5-6 小时的计算达到了 24 小时以上。这让我进行了调查。
下面是一些示例代码:
In [2]: import timeit
In [3]: s = """import numpy as np
...: x, y = np.random.rand(1000), np.random.rand(1000)
...: [all((x[i], y[i])) for i in range(1000)]
...: """
In [4]: timeit.timeit(s, number=1000)
Out[4]: 0.39837288856506348
In [5]: s_numpy = """import numpy as np
...: x, y = np.random.rand(1000), np.random.rand(1000)
...: [np.all((x[i], y[i])) for …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算我的 python 代码的时间,但我不断收到:
TypeError - 'module' 不可调用
import timeit
timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
Run Code Online (Sandbox Code Playgroud)
我正在检查的链接是这个 - https://docs.python.org/2/library/timeit.html
我希望看到代码运行所需的时间。
我在test.py中编写了这个简单的代码(在python中).我尝试运行timeit,我没有任何错误,但我没有得到任何有关运行时间的信息.你能帮助我吗 ?
import timeit
def functionsWhile():
"Desc about function"
lic = 0
n = 30000
while lic<= n:
lic += 1
#print "test"
return lic
t = timeit.Timer("functionsWhile()", "from __main__ import functionsWhile")
try:
t.repeat(3, 2)
except:
t.print_exc()
Run Code Online (Sandbox Code Playgroud)
我期待一个结果如(例子):
$>python test.py
[0.006793975830078125, 0.006793975830078125, 0.006793975830078125]
$>
Run Code Online (Sandbox Code Playgroud)
但我只有:
$>python test.py
$>
Run Code Online (Sandbox Code Playgroud)
我没有timeit的结果.我使用python 2.7和linux.
我正在遵循一个指南,该指南建议%timeit following在following已定义的函数中运行。
我尝试使用,import timeit但由于某种原因%timeit无法运行。我收到语法错误,很明显我没有正确使用它。我进行了简短的搜索,生成了timeit图书馆的页面,但这在使用方面使我更加困惑。
我想计时python函数或想要打印执行my_function()12次迭代所需的最佳时间.下面是我的代码:
def my_function():
print "hello"
if __name__ == "__main__":
import timeit
setup = "from __main__ import my_function"
print timeit.timeit("my_function()", setup=setup,number=12)
Run Code Online (Sandbox Code Playgroud)
但我越来越错误了
Traceback (most recent call last):
File "timeit.py", line 7, in <module>
print timeit.timeit("my_function()", setup=setup,number=12)
AttributeError: 'module' object has no attribute 'timeit'
Run Code Online (Sandbox Code Playgroud)
任何人请帮助..
我有一个简单的Fibonacci函数,它使用memoisation,它本身就可以正常工作.但是,当我想使用timeit计时时,我得到"NameError:全局名称'备忘录'未定义",即使它是.
#!/usr/bin/python
import sys
import timeit
memo = [0] * 100
def fibmem(n,memo):
#function things
for x in range(1,40):
mytime2 = timeit.Timer('fibmem('+str(x)+', memo)','from __main__ import fibmem')
delta2 = mytime2.timeit(1)
print str(x) + ' ' +str(delta2)
memo[:] = []
Run Code Online (Sandbox Code Playgroud)
我已经尝试过查找它可能是什么,但大多数答案涉及到包括from __main__ import,这不是问题.我确定它仍然与范围有关,但我对时间非常新,所以我不知道.
我正在为游戏编写一段代码,使用游戏中的坐标位置计算屏幕上所有对象之间的距离.最初我打算使用基本的Python和列表来做到这一点,但由于需要计算的距离数量会随着对象的数量呈指数级增长,我认为这样做可能会更快numpy.
我不是很熟悉numpy,而且我一直在用它来试验基本的代码.我写了一些代码来计算同一个函数numpy在常规Python中完成计算需要多长时间,并且numpy似乎总是花费比常规python更多的时间.
功能很简单.它从1.1开始,然后增加200,000次,将0.1添加到最后一个值,然后找到新值的平方根.这不是我在游戏代码中实际要做的事情,它将涉及从位置坐标中找到总距离矢量; 这只是我拼凑的快速测试.我已经在这里读到,数组的初始化在NumPy中需要更多的时间,所以我将两个numpy和python数组的初始化移到了它们的函数之外,但Python仍然比它更快numpy.
这是一些代码:
#!/usr/bin/python3
import numpy
from timeit import timeit
#from time import process_time as timer
import math
thing = numpy.array([1.1,0.0], dtype='float')
thing2 = [1.1,0.0]
def NPFunc():
for x in range(1,200000):
thing[0] += 0.1
thing[1] = numpy.sqrt(thing[0])
print(thing)
return None
def PyFunc():
for x in range(1,200000):
thing2[0] += 0.1
thing2[1] = math.sqrt(thing2[0])
print(thing2)
return None
print(timeit(NPFunc, number=1))
print(timeit(PyFunc, number=1))
Run Code Online (Sandbox Code Playgroud)
它给出了这个结果,表明普通Python的速度提高了3倍:
[ 20000.99999999 141.42489173]
0.2917748889885843 …Run Code Online (Sandbox Code Playgroud)