Giới thiệu. Tìm hiểu cách nắm bắt và xử lý các tín hiệu hệ điều hành như SIGINT [CTRL-C] trong Python cho người mới bắt đầu
Thêm bởi tác giả
Giới thiệu. https. //www. youtube. com/c/XanthiumIndustries/videos Thông tin thêm về các doanh nghiệp xanthium »
Sau đây, chúng ta sẽ tìm hiểu cách nắm bắt và xử lý các tín hiệu hệ điều hành như SIGINT và SIGBREAK trên Linux và HĐH Windows để kiểm soát luồng tập lệnh python của bạn trong quá trình thực thi
Chúng tôi sẽ sử dụng mô-đun tín hiệu từ Python 3 để nắm bắt và xử lý tín hiệu hệ điều hành
Thêm MẹoĐặt câu hỏiNhận xétTải xuống
Quân nhu
- Trình thông dịch Python 3
- soạn thảo văn bản
Thêm MẹoĐặt câu hỏiNhận xétTải xuống
Bước 1. nội dung
- Có thể tìm thấy bài viết gốc về Hướng dẫn xử lý tín hiệu Python tại đây
- Chúng tôi cũng có một video trên YouTube về Hướng dẫn xử lý tín hiệu Python
Thêm MẹoĐặt câu hỏiNhận xétTải xuống
Bước 2. mã nguồn
Mã có thể hướng dẫn hiển thị ở đây có thể là một phần hoặc mã giả vừa đủ để làm nổi bật các kỹ thuật hoặc phương pháp có liên quan.
Vui lòng sử dụng mã nguồn đầy đủ từ Github Repo của chúng tôi để tránh lỗi
- Duyệt qua Xử lý tín hiệu hệ điều hành trong Python 3 Repo
- Tải xuống Xử lý tín hiệu OS trong Python 3 Repo dưới dạng tệp zip
Thêm MẹoĐặt câu hỏiNhận xétTải xuống
Bước 3. Tín hiệu là gì
Tín hiệu là cách mà một chương trình hoặc quy trình [ở đây là tập lệnh python của chúng tôi] có thể nhận thông tin từ Hệ điều hành rằng một số sự kiện nhất định như Nhấn bàn phím [CTRL + C ] hoặc Lỗi đã xảy ra.
Tín hiệu được hệ điều hành gán Giá trị nguyên
Khi chúng ta nhấn CTRL + C trên Bàn phím, Hệ điều hành [Cả Windows và Linux] sẽ tạo ra tín hiệu SIGINT được gửi đến chương trình hiện đang hoạt động
Không phải tất cả các tín hiệu đều khả dụng trên tất cả các hệ thống. Tín hiệu khác nhau giữa các hệ điều hành [Linux/Windows]
Thêm MẹoĐặt câu hỏiNhận xétTải xuống
Bước 4. Kiểm tra các tín hiệu khả dụng trong hệ điều hành của bạn
Vì không phải tất cả các tín hiệu đều khả dụng trong mọi hệ điều hành, nên bạn nên biết những tín hiệu nào khả dụng trên hệ thống của mình
Ở đây chúng ta sẽ sử dụng Python 3 [Python 3. 9. x] và để truy cập các tín hiệu, chúng tôi phải nhập mô-đun tín hiệu
import signal # Import signal module
# available signals on our System
valid_signals = signal.valid_signals[] # requires python 3.9.0
# returns a SET
print['Number of Available Signals ->', len[valid_signals] , '\n']
for i in valid_signals:
print[i]
Đoạn mã trên sẽ in các tín hiệu có sẵn trên một hệ điều hành cụ thể. Tải xuống mã đầy đủ từ Github
Đây
valid_signals = signal.valid_signals[]
trả về một tập hợp các tín hiệu dành riêng cho hệ điều hành có sẵn, sau đó được in ra
Tín hiệu hệ điều hành khả dụng trên Windows 10
Thêm MẹoĐặt câu hỏiNhận xétTải xuống
Bước 5. Tín hiệu lập trình trên Python 3
Để sử dụng Tín hiệu mà tập lệnh của chúng tôi nhận được, chúng tôi phải thực hiện hai việc
- Viết Trình xử lý tín hiệu sẽ thực hiện xử lý tùy chỉnh khi nhận được Tín hiệu
- Đăng ký Signal với chức năng Signal Handler
import signal
def your_custom_signal_handler[signal_number,frame]:
code to do something
code to do something
code to do something
signal.signal[signal.SIGNALNAME,your_custom_signal_handler]
Ở đây chúng tôi sẽ sử dụng tín hiệu SIGINT để kiểm soát việc thực thi tập lệnh Python 3 của chúng tôi
SIGINT Signal phổ biến cho cả hệ thống Windows và Linux và giúp chúng tôi chạy mã của mình trên cả Hệ thống Windows và Linux
Vui lòng sử dụng mã từ Github
import signal # Import signal module
def SignalHandler_SIGINT[SignalNumber,Frame]:
print['SignalHandler of signal.SIGINT']
#register the signal with Signal handler
signal.signal[signal.SIGINT,SignalHandler_SIGINT]
while 1:
print["Press Ctrl + C "]
time.sleep[1]
Đây
def SignalHandler_SIGINT[SignalNumber,Frame]:
là Trình xử lý tín hiệu, Vì vậy, khi SIGINT tín hiệu được tạo, hàm này được gọi và câu lệnh print[] bên dưới được gọi
tuyên bố
signal.signal[signal.SIGINT,SignalHandler_SIGINT]
đăng ký hàm xử lý tín hiệu SignalHandler_SIGINT[SignalNumber,Frame]. với tín hiệu SIGINT signal. KÝ HIỆU
Xin lưu ý rằng mã phải được chạy dưới dòng lệnh
Nếu bạn sử dụng một IDE như Thonny hoặc IDLE, thì IDE đó có xu hướng cản trở việc nhận tín hiệu SIGINT
Thêm MẹoĐặt câu hỏiNhận xétTải xuống
Bước 6. Thoát an toàn khỏi vòng lặp vô hạn trong Python bằng CTRL + C [SIGINT]
Trong ví dụ này, chúng ta sẽ tìm hiểu cách thoát khỏi vòng lặp vô hạn trong Python 3 một cách an toàn bằng cách sử dụng các tín hiệu
Trong một số ứng dụng như Phần mềm hệ thống thu thập dữ liệu cổng nối tiếp được viết bằng Python, chúng tôi phải truy vấn một cảm biến hoặc Bộ vi điều khiển như bo mạch Arduino hoặc Raspberry Pi liên tục trong một vòng lặp vô hạn
Trong các ứng dụng đó, chúng ta có thể sử dụng tín hiệu SIGINT [CTRL + C] để ngắt vòng lặp vô hạn và đóng ứng dụng một cách an toàn mà không bị rò rỉ tài nguyên