标签: timeit

使用Python中的参数测量函数的时间

我试图测量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 performance time arguments timeit

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

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

我有一个名为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作为参数传递给functimeit

python lambda arguments timeit

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

为什么 numpy.all 比 python 标准 all 慢得多?

我编写了一个脚本来对我们的本地集群进行一些排名顺序相关计算。计算涉及寻找两个阵列,XY长度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 numpy timeit

1
推荐指数
1
解决办法
797
查看次数

使用 timeit 计算执行时间时出现“TypeError: 'module' is not callable”

我正在尝试计算我的 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

我希望看到代码运行所需的时间。

python timeit

1
推荐指数
1
解决办法
1151
查看次数

Python - 没有来自timeit的结果

我在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.

python timeit

0
推荐指数
1
解决办法
454
查看次数

%timeit是否通过命令行中的参数应用于函数或引用?

我正在遵循一个指南,该指南建议%timeit followingfollowing已定义的函数中运行。

我尝试使用,import timeit但由于某种原因%timeit无法运行。我收到语法错误,很明显我没有正确使用它。我进行了简短的搜索,生成了timeit图书馆的页面,但这在使用方面使我更加困惑。

python timeit

0
推荐指数
1
解决办法
2399
查看次数

AttributeError:'module'对象在执行python函数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)

任何人请帮助..

python timeit

0
推荐指数
1
解决办法
1132
查看次数

全局名称"x"未使用timeit定义

我有一个简单的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 scope global timeit nameerror

0
推荐指数
1
解决办法
868
查看次数

Timeit显示常规python比numpy更快?

我正在为游戏编写一段代码,使用游戏中的坐标位置计算屏幕上所有对象之间的距离.最初我打算使用基本的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)

python performance numpy timeit

0
推荐指数
1
解决办法
339
查看次数

标签 统计

python ×9

timeit ×9

arguments ×2

numpy ×2

performance ×2

global ×1

lambda ×1

nameerror ×1

scope ×1

time ×1