2015-02-08 25 views
7

Khi tôi làm một cái gì đó giống nhưDừng Sublime Text từ thực hiện vòng lặp vô hạn

while True: 
    print('loop') 

và thực thi mã trong siêu việt tôi không thể để ngăn chặn nó. Tôi phải tự giết quá trình và khởi động lại tuyệt vời.

Có cách nào để đặt một số loại 'max_execution_time' hoặc bất kỳ cách giải quyết nào khác cho phép chúng tôi dừng tính năng này một cách độc đáo không?

+0

'Ctrl + C' sẽ hoạt động như bàn phím bị gián đoạn. –

+0

thật không may, điều này chỉ hoạt động trong thiết bị đầu cuối nhưng không phải trong tuyệt vời. Sublime được loại đông lạnh và bỏ qua tất cả các đầu vào. – Finn

Trả lời

18

bạn muốn sử dụng ctrl + phá vỡ. Để biết thông tin của riêng bạn, chỉ cần kiểm tra trong Công cụ trong Văn bản tối cao và bạn sẽ thấy Hủy xây dựng và phím nóng ở trên. Nó sẽ hoạt động tốt cho các vòng vô hạn. Đủ để nói, tôi đã có cùng một điều xảy ra! ;)

+0

Có vẻ như đó sẽ là một giải pháp. Nhưng ngay sau khi một vòng lặp vô hạn bắt đầu, tuyệt vời (python) sẽ ăn tất cả các cpu và bỏ qua tất cả các đầu vào. – Finn

+0

@Finn Thật kỳ lạ. Tôi rất tò mò muốn xem bạn đang chạy loại mã nào. Bây giờ tôi nghĩ về nó, có một lần mà điều tương tự đã xảy ra với tôi, nhưng tôi không nhớ tại thời điểm nó gây ra nó. Tôi muốn được *** rất *** quan tâm đến sự hiểu biết thêm về những gì có thể gây ra tuyệt vời để bỏ qua tất cả các đầu vào. Chắc chắn, điều này trong khi True: print ('loop') 'không gây ra vấn đề bạn mô tả mặc dù, phải không? Điều tương tự trên máy của tôi có thể dễ dàng bị gián đoạn với phím nóng đã đề cập. – Eithos

+0

Vì vậy, cuối cùng tôi có thể sử dụng 'ctrl + break' sau khi tôi cài đặt lại cao siêu và python .. – Finn

2

Bạn có một vài tùy chọn ở đây. Bạn có thể thiết lập một số lượng tối đa khổng lồ lặp (Tôi thực sự làm được điều này với hầu hết các vòng lặp while cho đến khi tôi đã hoàn toàn sửa lỗi mã của tôi, để tránh đau vòng lặp vô hạn): Vì vậy, ví dụ

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

Một thay thế sẽ là sử dụng mô-đun thời gian để đồng hồ thời gian thực hiện mã của bạn như thế này

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

Đối với tôi (trên Linux), không có break phím trên bàn phím và phím tắt này đã bằng cách nào đó ràng buộc với một sự kết hợp khác nhau: ctrl +alt + c.

Bạn có thể tìm thấy nơi nó được ràng buộc trong Tools menu:

enter image description here

Sau khi gián đoạn kịch bản của bạn, bạn sẽ thấy văn bản [Cancelled] in đến sublimetext console.

Các vấn đề liên quan