【问题标题】:Stop Sublime Text from executing infinite loop停止 Sublime Text 执行无限循环
【发布时间】:2015-04-08 11:12:00
【问题描述】:

当我做类似的事情时

while True:
    print('loop')

并以崇高的方式执行该代码我无法阻止它。我必须手动终止进程并重新启动 sublime。

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

【问题讨论】:

  • Ctrl + C 应该充当键盘中断。
  • 不幸的是,这仅适用于终端,但不适用于 sublime。 Sublime 被冻结并忽略所有输入。
  • 是的 Ctrl C 被列为stop build 但什么也不做......我只是在终端中使用pstree 来查看挂起的崇高并杀死该子进程:(

标签: python sublimetext3


【解决方案1】:

如果您使用的是 Sublime Text 3,请按照此操作,转到 Preferences > Package Settings > Alignment > Key Bindings-User

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      组合是ctrl+break

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

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

      现在,按 Ctrl+C 将停止执行。当然,您可以将组合更改为任何您想要的。

      【讨论】:

      • 根据您的需要设置一切的好方法!谢谢。
      • 这将覆盖复制键盘快捷键。我将它设置为 ctrl+q 因为我不进行任何宏录制。
      【解决方案4】:

      对于 MacOS:

      cmd + option + esc
      

      强制退出

      【讨论】:

        【解决方案5】:

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


        对于 Windows 用户,没有 Break 键,所以进入 Preferences>Key Bindings 并更改行

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

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

        【讨论】:

        • 似乎这将是一个解决方案。但是一旦无限循环开始,sublime (python) 就会吃掉所有的 cpu 并忽略所有输入。
        • @Finn 这很奇怪。我很想知道您正在运行哪种代码。现在回想起来,曾经有一次我也遇到过同样的情况,但我现在不记得是什么原因造成的。我非常有兴趣更多地了解可能导致 Sublime 忽略所有输入的原因。当然,这个while True: print('loop') 不会导致您描述的问题,对吧?使用上述热键可以轻松中断我机器上的相同操作。
        • 所以在我重新安装了 sublime 和 python 之后,我终于可以使用ctrl + break ..
        • 如果 sublime 有一个默认设置自动突破就更好了
        • @krozaine 对我来说(在 Windows 7 中)这个快捷方式不起作用。如果是这样,您可能想要打开 sublime 键绑定(“首选项”-“键绑定”)并将行 { "keys": ["ctrl+break"], "command": "cancel_build" }, 更改为 { "keys": ["ctrl+alt+b"], "command": "cancel_build" }, 之类的东西。那么快捷键是 CTRL + ALT + B
        【解决方案6】:

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

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

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

        【讨论】:

        • 对我来说(在 linux 上),没有“取消构建”。它在菜单中列出,但它是灰色的,并且没有分配快捷方式。刚刚又杀了它......“break”键似乎是顶行奇怪的很少使用的三按钮块中的第三个,就在“delete”/“pos-1”/“up”的正上方,但确实如此什么都没有。
        【解决方案7】:

        这里有几个选项。 您可以设置一个巨大的最大迭代次数(我实际上使用大多数 while 循环来执行此操作,直到我完全调试了我的代码,以避免无限循环的痛苦): 比如

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

        另一种方法是使用 time 模块来计算代码的执行时间,像这样

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-21
          • 2015-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-24
          相关资源
          最近更新 更多