2015-02-08 16 views
7

Kiedy zrobić coś podobnegoZatrzymaj Sublime Text z wykonaniem nieskończoną pętlę

while True: 
    print('loop') 

i wykonać ten kod w wysublimowane nie jestem w stanie go zatrzymać. Muszę ręcznie zabić proces i ponownie uruchomić sublime.

Czy istnieje sposób ustawienia jakiegoś rodzaju zabezpieczenia na 'max_execution_time' lub innego sposobu obejścia problemu, który pozwala nam zatrzymać to ładnie?

+0

'Ctrl + C' powinno działać jako przerwanie klawiatury. –

+0

Niestety, działa to tylko w terminalu, ale nie w podniosłym stylu. Sublime ulega zamrożeniu i ignoruje wszystkie dane wejściowe. – Finn

Odpowiedz

18

chcesz użyć ctrl + break. Dla własnych informacji, po prostu sprawdź w Narzędzia w Sublime Text, a zobaczysz Anuluj kompilację i powyższy klawisz skrótu. Będzie działać dobrze dla nieskończonych pętli. Wystarczy powiedzieć, że tak samo się stało! ;)

+0

Wygląda na to, że to rozwiązanie. Ale gdy tylko rozpocznie się nieskończona pętla, sublime (python) zjada cały procesor i ignoruje wszystkie dane wejściowe. – Finn

+0

@Finn To dziwne. Byłbym ciekawy jakiego kodu używasz. Teraz, kiedy o tym myślę, był jeden raz, kiedy to samo stało się ze mną, ale nie pamiętam w tej chwili, co to spowodowało. Byłbym bardzo zainteresowany *** zrozumieniem, co może spowodować, że Sublime zignoruje wszystkie dane wejściowe. Z pewnością ten 'while True: print ('loop')' nie powoduje problemu, który opisałeś, prawda? To samo na mojej maszynie można łatwo przerwać za pomocą wspomnianego klawisza skrótu. – Eithos

+0

Więc w końcu jestem w stanie użyć 'ctrl + break' po ponownym zainstalowaniu sublime i python .. – Finn

2

Masz kilka opcji tutaj. Można ustawić ogromny maksymalną liczbę iteracji (I rzeczywiście to zrobić z najbardziej podczas pętli, dopóki nie całkowicie pozbawione błędów mój kod, aby uniknąć nieskończonej bóle pętla) Tak na przykład

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

Alternatywą byłoby za pomocą modułu zegara czasu do czasu wykonania kodu jak ten

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

Dla mnie (w systemie Linux), nie ma break klawisz na klawiaturze i ten skrót był w jakiś sposób związany z innej kombinacji: ctrl + alt + c.

można dowiedzieć się, gdzie jest on związany w menu Tools:

enter image description here

Po przerywania skrypt powinien pojawić się tekst [Cancelled] wydrukowany do konsoli Sublime Text.

Powiązane problemy