Trong khi chạy một tập lệnh bằng Python, bạn có thể không biết rằng mã này có một vòng lặp vô hạn. Vì vậy, khi bạn chạy chương trình, nó sẽ đi vào một vòng lặp vô hạn. Trong tình huống như vậy, bạn sẽ phải tạm dừng việc thực thi mã
Trong bài viết này, chúng ta sẽ xem xét các cách khác nhau để kết thúc một tập lệnh đang chạy trong Python
Các cách kết thúc chương trình trong Python
Sử dụng tính năng ngắt bàn phím
Nếu bạn muốn thoát khỏi chương trình đang chạy, thì bạn cần tăng KeyboardInterrupt để chấm dứt chương trình
Đối với Windows, nhấn CTRL + C
Đối với hệ thống Linux, hãy nhấn CTRL + Z
Nếu KeyboardInterrupt không hoạt động, thì bạn có thể gửi tín hiệu SIGBREAK. Trên Windows, nhấn CTRL + Tạm dừng/ngắt. Điều này có thể được xử lý bởi trình thông dịch và nó có thể không tạo ra một ngoại lệ KeyboardInterrupt có thể bắt được
Trong môi trường Linux hoặc Unix, bạn có thể tìm PID của quy trình [số nhận dạng quy trình] cho chương trình mà bạn đang chạy. Sau đó giết quá trình bằng cách sử dụng PID của nó. Bạn có thể sử dụng ps aux. grep python để xác định các quy trình Python đang chạy và sau đó sử dụng killcommand để gửi tín hiệu SIGTERM tới hệ thống
Các lệnh là
ps aux | grep python
kill -9
Để giết chương trình theo tên tệp
pkill -f python-script-name.
Nhưng đối với người dùng Windows, việc xử lý các tín hiệu quy trình không dễ dàng như vậy. Nếu bạn đang làm việc trên Windows, bạn phải kết thúc quá trình thực thi bằng hàm TerminateProcess. Cách tốt nhất để làm điều đó là mở Trình quản lý tác vụ. xác định vị trí con trăn. exe tương ứng với tập lệnh Python của bạn và nhấp vào "Kết thúc quá trình". Điều này sẽ chấm dứt chương trình buộc
Lệnh taskkill cũng có thể được sử dụng cho các mục đích tương tự. Lệnh này cho phép người dùng trên bất kỳ phiên bản Windows nào chấm dứt hoặc hủy bất kỳ tác vụ nào bằng cách sử dụng ID tiến trình của tác vụ. Bạn phải nhập mã cho lệnh này trong dòng lệnh. Ví dụ,
c. \>taskkill /IM mspaint. người cũ
Điều này sẽ giết tất cả các tiến trình đang chạy mspaint. người cũ
Thoát khỏi chương trình trong mã
Sử dụng “os. lối ra[]"
Phương pháp này được sử dụng để kết thúc quá trình với trạng thái được chỉ định. Nó thường được gọi cho một tiến trình con sau os. phương thức fork[] được sử dụng. Bạn có thể sử dụng cái này mà không cần xóa bộ đệm stido hoặc gọi bất kỳ trình xử lý dọn dẹp nào
Thí dụ
# Python program to show exit[0] program
import os
# Run for loop to print number 1 to 10
for i in range[10]:
# Exit the program if value of i equal to 5
if i == 5:
# Prints the exit message
print[exit]
os._exit[0]
print[i]
đầu ra
0
1
2
3
4
Sử dụng exit[] hoặc Ctrl-Z cộng với quay lại để thoát
Sử dụng “sys. lối ra[]"
hệ thống. phương thức exit[] cho phép bạn thoát khỏi chương trình Python. Phương thức nhận một đối số tùy chọn, là một số nguyên. Điều này chỉ định trạng thái thoát của mã. Trạng thái thoát bằng 0 được coi là kết thúc thành công
Thí dụ
# Python program to show sys.exit[] program
import sys
# Run for loop to print number 1 to 10
for i in range[10]:
# Exit the program if value of i equal to 5
if i == 5:
# Prints the exit message
print[exit]
sys.exit[0]
print[i]
đầu ra
0
1
2
3
4
Sử dụng exit[] hoặc Ctrl-Z cộng với Quay lại để thoát
Sử dụng “nâng cao SystemExit”
SystemExit là một ngoại lệ được đưa ra khi chương trình bạn đang chạy cần dừng lại. Bạn sử dụng ngoại lệ này để gây ra lỗi.
# Python program to show raise SystemExit method
# Run for loop to print number 1 to 10
for i in range[10]:
# Exit the program if value of i equal to 5
if i == 5:
# Prints the exit message
print[exit]
raise SystemExit
print[i]
đầu ra
0
1
2
3
4
Sử dụng exit[] hoặc Ctrl-Z cộng với Quay lại để thoát
Phần kết luận
Ngoài các cách khác nhau được thảo luận ở trên để kết thúc chương trình Python, bạn cũng có thể sử dụng phương thức Python tích hợp sẵn thoát[]. Đối với phương pháp này, bạn không phải nhập bất kỳ thư viện nào và điều này có thể được đưa vào bất kỳ mã nào một cách đơn giản
Bước đầu tiên là liệt kê các tiến trình đang chạy. Điều này có thể được thực hiện bằng cách sử dụng thư viện psutil Python – một thư viện đa nền tảng để giám sát quy trình và hệ thống
________số 8_______Khi bạn chạy mã này trên Windows, danh sách tên quy trình sẽ không luôn khớp với tên hiển thị được liệt kê trong Trình quản lý tác vụ. Bạn có thể thấy tên quy trình trong Trình quản lý tác vụ khi nhấp chuột phải và chọn thuộc tính. Điều này rất quan trọng khi nói đến các chuỗi phù hợp để hủy một quy trình và tại sao việc liệt kê các quy trình trước lại hữu ích
Làm thế nào để giết một quá trình
Khi bạn đã chọn một quy trình, lệnh hủy nó bằng psutil trông như thế này
proc.kill[]
Tuy nhiên, nếu bạn không tạo quy trình ngay từ đầu hoặc quy trình không được tạo thay mặt bạn, thì bạn sẽ không có quyền hủy quy trình đó, trừ khi bạn đang chạy mã với tư cách là “Quản trị viên” hoặc “siêu người dùng”. Ví dụ: trên Windows, bạn có thể khởi động cửa sổ PowerShell bằng cách nhấp chuột phải và chọn “Chạy với tư cách Quản trị viên” hoặc trên Linux chạy bằng sudo
Cách tiêu diệt các quy trình dựa trên một phần chuỗi
Trong ví dụ này, một người bạn của tôi dành quá nhiều thời gian để chơi game muốn chạy một trò chơi đòi hỏi CPU và bộ nhớ cao, vì vậy họ muốn tắt các quy trình Adobe Creative Cloud đang chạy và hiện không cần, [nhưng
Sau khi kiểm tra danh sách quy trình, tên quy trình cần hủy có chứa các chuỗi. “Adobe”, “CCXProcess”, “CoreSync” và “Đám mây sáng tạo”. Bạn có thể khớp các chuỗi với một tập hợp các câu lệnh “hoặc”, nhưng một cách khác để khớp tên từ danh sách các chuỗi trong Python là sử dụng hàm có sẵn.
Một chương trình Python 3 đơn giản để khớp và hủy các quy trình trông như thế này
'''pykill.py - selective process kill prog''' import psutil def main[]: '''Process kill function''' for proc in psutil.process_iter[]: # check whether the process name matches # print[proc.name[]] if any[procstr in proc.name[] for procstr in\ ['Adobe', 'CCXProcess', 'CoreSync', 'Creative Cloud']]: print[f'Killing {proc.name[]}'] proc.kill[] if __name__ == "__main__": main[]
Trước khi chạy phiên bản này của riêng bạn và phá vỡ hệ điều hành của bạn, bạn nên kiểm tra nó. e. g. bắt đầu một cái gì đó như notepad và thay thế danh sách chuỗi bằng [‘notepad’]. Bạn sẽ không cần chạy notepad killer với tư cách là Quản trị viên [trừ khi những người khác cũng đăng nhập và bạn muốn kill notepad của họ]