gpt4 book ai didi

python - 参数在一定范围内的定时函数

转载 作者:行者123 更新时间:2023-12-01 04:01:50 24 4
gpt4 key购买 nike

loops = 25

a = range(1, loops)

def f(x):
return 3 * log(x) + cos(x) ** 2

为此使用 timeit 的最佳方法是什么?我已经尝试了好几次,但不断出现错误。我想运行 f 次等于循环次数。

到目前为止,我已经得到了 print(timeit.timeit(lambda: f(5))),以及六次充满错误的尝试,尝试使用 timeit 构造函数的参数。

继续。我还有另一个类似的例子。

a = np.arange(1, loops)

r = 3 * np.log(a) + np.cos(a) ** 2
#Using 2 instead of a
print(timeit.timeit("3 * np.log(2) + np.cos(2) ** 2", setup="import numpy as np"))

如何将范围 a 合并到 timeit 的 stmt 字符串中?

最佳答案

Python >= 3.5

The optional globals argument specifies a namespace in which to execute the code.

Changed in version 3.5: The optional globals parameter was added.

https://docs.python.org/3/library/timeit.html#timeit.timeit

>>> import timeit
>>> a = range(1, 1000)
>>> timeit.timeit("sum(a)", globals=globals())
10.732978596999601

Python<3.5

在设置语句中构建您的命名空间(旧方法)。

stmt and setup may also contain multiple statements separated by ; or newlines, as long as they don’t contain multi-line string literals.

In [2]: setup = """
...: a = range(1, 1000)
...: """

In [3]: timeit.timeit("sum(a)", setup=setup)
Out[3]: 10.133886003999578

即使它包含多行字符串文字,这似乎也可以正常工作......

In [11]: setup = """
a = '''heh
hoh
hih
'''
def f(x):
#print(x)
return len(x)
"""

In [12]: timeit.timeit("f(a)", setup)
Out[12]: 0.08516639499976009

关于python - 参数在一定范围内的定时函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36348022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com