停止 Sublime Text 执行无限循环

Stop Sublime Text from executing infinite loop

当我做类似

的事情时
while True:
    print('loop')

并在 sublime 中执行该代码我无法阻止它。我必须手动终止进程并重新启动 sublime。

有没有办法设置某种 'max_execution_time' 或任何其他解决方法,使我们能够很好地停止这种情况?

这里有几个选项。 您可以设置一个巨大的最大迭代次数(我实际上对大多数 while 循环都这样做,直到我完全调试了我的代码,以避免无限循环的痛苦): 例如

max_iterations = 100000000
while i < max_iterations:
   print("Hello World")

另一种方法是像这样使用时间模块来记录代码的执行时间

import time
max_execution_time = 10000000 #this will be in seconds
start_time = time.clock()
elapsed_time = 0   
while elapsed_time < max_execution_time:
    elapsed_time = time.clock() = start_time
    #Your loop code here

您想使用 Ctrl+Break。对于您自己的信息,只需在 Sublime Text 中的工具下查看,您将看到 Cancel Build 和上面的热键。它适用于无限循环。可以说,我也遇到过同样的事情! ;)


对于 Windows 用户,没有 Break 键,因此进入首选项>键绑定并更改行

{ "keys": ["ctrl+break"], "command": "cancel_build" }

到不同的快捷方式,例如 Ctrl+Alt+B

对我来说(在 Linux 上),键盘上没有 break 键,这个快捷方式以某种方式绑定到不同的组合:ctrl +alt+c

您可以在Tools菜单中找到它的绑定位置:

中断脚本后,您应该会看到文本 [Cancelled] 打印到 sublimetext 控制台。

对于 MacOS:

cmd + option + esc

强制退出

组合为ctrl+break.

在 Windows 中没有中断按钮,因此您可以转到 Preferences > Key Bindings 并在用户端添加:

{ "keys" : ["ctrl+c"], "command": "cancel_build"}

现在,按 Ctrl+C 将停止执行。当然,您可以随意更改组合。

更新

如@Brad 所述,Ctrl+C 将覆盖复制键盘快捷键。给它分配另一个键是明智的,比如 Brad 指出的 Q。

只需在 MacOS 上键入 CTRL+C 键。

如果您使用的是 Sublime Text 3,请按照此操作,转到“首选项”>“包设置”>“对齐”>“键绑定-用户”

[
    { "keys": ["ctrl+n"], "command": "cancel_build" }
]

现在,按ctrl+n,执行将立即停止。当然,您可以将组合更改为您想要的任何组合(代替 ctrl+n)。