无限循环,未知原因

时间:2017-12-23 00:28:47

标签: python python-3.6 timeit

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

SELECT
    empl_ssn
    , cov_ind_ssn
    , relationship_code
    , ROW_NUMBER() OVER (ORDER BY CASE WHEN empl_ssn = cov_ind_ssn THEN 0 ELSE 1 END, birthdate) depend_no
FROM full_data
WHERE empl_ssn = @current_employee

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

我已经尝试在Spyder IDE中运行它,并且在命令提示符下,两者都有相同的结果。

如果我将设置更改为生成器而不是列表理解,一切正常,关于运行相同代码的时间也是如此。

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

1 个答案:

答案 0 :(得分:4)

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