Hôm nay tôi chạy chống lại thực tế, rằng sys.exit()
được gọi là từ một chủ đề con không giết quá trình chính. Tôi không biết điều này trước đây, và điều này là ổn, nhưng tôi cần thời gian dài để nhận ra điều này. Nó có thể đã lưu nhiều thời gian, nếu sys.exit(msg)
đã in msg
đến stderr
. Nhưng nó không.Python: Tại sao `sys.exit (msg)` được gọi từ một luồng không in `msg` thành stderr?
Hóa ra đó không phải là lỗi thực sự trong ứng dụng của tôi; nó được gọi là sys.exit(msg)
với một lỗi có ý nghĩa theo một cách có ý nghĩa - nhưng tôi không thể thấy điều này.
In the docs for sys.exit()
it is stated: "[...] bất kỳ đối tượng khác được in để sys.stderr
và kết quả trong một mã lối ra của 1"
Đây là không đúng cho một cuộc gọi từ một đứa trẻ sợi, nơi sys.exit()
rõ ràng là cư xử như thread.exit()
: "Nâng cao ngoại trừ SystemExit Khi không bắt được, điều này sẽ gây ra các chủ đề để thoát âm thầm."
Tôi nghĩ khi một lập trình viên muốn sys.exit(msg)
để in một thông báo lỗi, thì điều này chỉ nên được in - độc lập với nơi mà nó được gọi. Tại sao không? Tôi hiện không thấy lý do nào. Ít nhất phải có một gợi ý trong tài liệu cho sys.exit()
rằng thư không được in từ chuỗi.
Bạn nghĩ sao? Tại sao các thông báo lỗi bị ẩn khỏi chủ đề? Điều này có nghĩa không?
Trân trọng,
Jan-Philip Gehrcke
Bạn đã cho tôi lời khuyên tốt, một lần nữa;) Btw: Thật tuyệt vời khi bạn chia sẻ kiến thức của mình tại đây. Tôi thấy rằng bạn hiện đang dành phần lớn thời gian của mình để lấp đầy nền tảng này với các công cụ thuần túy về Python!Đây là những gì cộng đồng cần nhưng đó không phải là vấn đề tất nhiên. Một cảm ơn rất lớn về điều này! Jan-Philip –
@ Jan-Philip, bạn được chào đón nhiều nhất, và, cảm ơn BẠN vì các kudo, nó luôn tuyệt vời khi biết tôi đang được giúp đỡ! –