无限循环,未知原因

infinite loop, unknown reason

出于某种原因,这段代码似乎进入了一个无限循环,我不知道为什么

import timeit

t = timeit.Timer(stmt="for num in num_list: print(num)",
                 setup="num_list = [digit for digit in range(1, 101)]")

print(t.timeit())

我通过 Anaconda 安装了 python 版本 3.6.2。

我已经在 Spyder IDE 和命令提示符下 运行 试过了,两者的结果相同。

如果我将设置更改为生成器而不是列表理解,一切正常,同样可以说 运行 超时的相同代码。

我什至尝试过重新启动计算机,因为你知道,我必须尝试将其关闭并重新打开,它适用于大多数情况。

这不是一个无限循环——只是一个很长的循环。 setup 仅 运行 一次,因此当您使用生成器表达式时,它会在 stmt 的第一个 运行 之后被消耗,并且不再打印任何内容。当您使用列表推导式时,每个列表元素都会在 stmt 中每隔 运行 打印一次,导致对 print 的 100 × 1000000 次调用。 (100 万是 Timer.timeit() 的默认迭代次数。)