gpt4 book ai didi

Python timeit 模块导致死循环

转载 作者:行者123 更新时间:2023-12-05 02:59:25 26 4
gpt4 key购买 nike

考虑这段 Python3 代码:


def classic_fibonacci(limit: int) -> List[int]:
nums = []
curr, nxt = 0, 1

while curr < limit:
curr, nxt = nxt, nxt + curr
nums.append(curr)

return nums

def classic_fib_profiling():
for n in classic_fibonacci(limit=1000):
print(n, end=', ')

if __name__ == '__main__':
import timeit
timeit.timeit("classic_fib_profiling()", setup="from __main__ import classic_fib_profiling")

如预期的那样,调用 classic_fib_profiling() 会返回一个斐波那契数列,仅限于 limit 参数。

另一方面,使用 timeit.timeit 调用它会导致解释器进入无限循环,永不停止。我无法通过调试或搜索文档(和 SO)找到解决方案。任何帮助将不胜感激。

最佳答案

它不会进入无限循环。它将运行相同的函数 number 次(默认值:number=1000000)。只需等待它完成,或提供循环应运行的次数。检查 timeit.timeit 函数的参数。

Help on function timeit in module timeit:

timeit(stmt='pass', setup='pass', timer=, number=1000000, globals=None) Convenience function to create Timer object and call timeit method.

改变行从,

>>> timeit.timeit("classic_fib_profiling()", setup="from __main__ import classic_fib_profiling")

>>> timeit.timeit("classic_fib_profiling()", setup="from __main__ import classic_fib_profiling", number=1)

并观察 :)

关于Python timeit 模块导致死循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57900514/

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