2012-07-30 27 views
6

Tôi có một chương trình đang sử dụng một chuỗi. Khi chương trình của tôi bị đóng, luồng của tôi vẫn đang chạy và điều đó là bình thường. Tôi muốn biết làm thế nào thread của tôi có thể phát hiện rằng chương trình chính được chấm dứt; tự nó. Tôi sẽ làm như thế nào?python: Cách phát hiện khi chuỗi của tôi trở thành trẻ mồ côi?

Chuỗi của tôi nằm trong vòng lặp vô hạn và xử lý nhiều đối tượng trong Hàng đợi. Tôi không thể xác định chủ đề của tôi như một daemon, khác tôi có thể mất một số dữ liệu ở phần cuối của chương trình chính. Tôi không muốn chương trình chính của tôi đặt giá trị boolean khi nó đóng.

Trả lời

4

Nếu bạn có thể xử lý chủ đề chính, bạn có thể gọi is_alive() trên đó.

Hoặc, bạn có thể gọi threading.enumerate() để nhận danh sách tất cả các chuỗi đang hoạt động và kiểm tra xem chuỗi chính có nằm trong đó hay không.

Hoặc nếu điều đó là không thể, thì bạn có thể kiểm tra xem chuỗi con có phải là chuỗi không phải daemon duy nhất còn lại hay không.

+0

Cảm ơn nó đã giải quyết được sự cố của tôi. 'cho luồng trong luồng.enumerate(): nếu thread.getName(). Find (" MainThread ")! = -1: nếu thread.is_alive()! = True: in" MainThread is stopped " else : in "MainThread đang chạy" – user1528760

0

Ứng dụng có hoạt động nếu người quản lý của bạn theo dõi số lượng chủ đề đang mở, khi đó trẻ em tự tử khi bị bỏ đói đầu vào? Vì vậy, phụ huynh sẽ bắt đầu đẩy dữ liệu vào hàng đợi và công nhân sẽ tiêu thụ dữ liệu từ hàng đợi. Nếu một nhân viên không tìm thấy gì trên hàng đợi trong một khoảng thời gian chờ nhất định, nó sẽ tự sát. Các chủ đề chính sau đó sẽ theo dõi bao nhiêu công nhân đã hoạt động và định kỳ bắt đầu công nhân mới nếu số lượng công nhân hoạt động được theo một ngưỡng nhất định.

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