由于某种原因,这段代码似乎进入了一个无限循环,我不知道为什么
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中运行它,并且在命令提示符下,两者都有相同的结果。
如果我将设置更改为生成器而不是列表理解,一切正常,关于运行相同代码的时间也是如此。
我甚至尝试重新启动计算机,因为你知道,我必须尝试将其关闭再打开,它适用于大多数事情。
答案 0 :(得分:4)
这不是一个无限循环 - 只是一个漫长的循环。 setup
只运行一次,因此当您使用生成器表达式时,它会在第一次运行stmt
后消耗,并且不再打印任何内容。当您使用列表推导时,每次运行stmt
时都会打印每个列表元素,从而导致对print
的100×1000000次调用。 (100万是Timer.timeit()
的默认迭代次数。)