2015-02-08 7 views
7

Когда я делаю что-то вродеStop Sublime Text от зацикливания

while True: 
    print('loop') 

и выполнить этот код в возвышенной я не в состоянии остановить его. Я должен вручную убить процесс и перезапустить возвышенное.

Есть ли способ установить какой-то 'max_execution_time' или любое другое обходное решение, которое позволяет нам прекратить это?

+0

'Ctrl + C' должен действовать как прерывание клавиатуры. –

+0

К сожалению, это работает только в терминале, но не в возвышенном виде. Sublime получает вид замороженного и игнорирует все входные данные. – Finn

ответ

18

Вы хотите использовать Ctrl + перерыв. Для вашей собственной информации просто перейдите в Инструменты под Sublime Text, и вы увидите Отменить сборку и вышеприведенную горячую клавишу. Это будет отлично работать для бесконечных циклов. Достаточно сказать, что у меня было то же самое! ;)

+0

Похоже, это было бы решением. Но как только начинается бесконечный цикл, возвышенный (python) будет есть весь процессор и игнорирует все входные данные. – Finn

+0

@Finn Это странно. Мне было бы интересно узнать, какой код вы используете. Теперь, когда я думаю об этом, однажды был случай, когда со мной произошло то же самое, но на данный момент я не помню, как это вызвало это. Мне было бы очень интересно узнать больше о том, что может заставить Sublime игнорировать все входные данные. Конечно, этот 'while True: print ('loop')' не вызывает проблему, которую вы описываете, верно? То же самое на моей машине можно легко прервать упомянутой горячей клавишей. – Eithos

+0

Итак, наконец, я могу использовать 'ctrl + break' после того, как я переустановил возвышенный и python. – Finn

2

У вас есть пара вариантов здесь. Вы можете установить огромное максимальное количество итераций (я на самом деле сделать это с большинством в то время как петли, пока я полностью отлажена мой код, чтобы избежать бесконечных болей цикла): Так, например

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 
0

Для меня (на Linux), нет break клавиша на клавиатуре, и этот ярлык был каким-то образом связан с различной комбинацией: Ctrl + альт + с.

Вы можете найти, где он связан в меню Tools:

enter image description here

После прерывания скрипта вы должны увидеть текст [Cancelled] выводимого на консоль sublimetext.