2011-01-25 33 views
6

Tôi đang viết một ứng dụng Python đa luồng tạo nhiều kết nối TCP tới máy chủ. Mỗi kết nối được thực hiện trên một luồng riêng biệt. Đôi khi sợi dây treo trong một thời gian dài mà tôi không muốn. Làm thế nào tôi có thể nhận được các chủ đề để giết chính nó sau một thời gian nhất định? Từ các chủ đề chính làm thế nào tôi có thể xác định rằng các chủ đề con tự giết?Python: làm thế nào tôi có thể nhận được một sợi để tự giết sau một thời gian chờ?

Nếu có thể, tôi sẽ đánh giá cao một đoạn mã hiển thị cách thực hiện việc này. Cảm ơn. Cập nhật Hệ thống

là Ubuntu 9:10

+0

Bạn có ý gì khi bị treo? Nếu đó là hoạt động mạng bị treo, bạn không thể đặt thời gian chờ cho nó? –

+0

Có, tôi có thể đặt thời gian chờ mạng, nhưng điều đó gây ra một số vấn đề khác. Xem câu hỏi của tôi từ hôm qua. Phương pháp này không có thời gian chờ hoạt động tốt cho hầu hết các máy chủ. Tôi chỉ muốn biết làm thế nào để có được một sợi để giết chính nó. – VacuumTube

+0

Đọc về luồng.Timer "Một chuỗi thực hiện một hàm sau một khoảng thời gian đã chỉ định đã trôi qua". http://docs.python.org/library/threading.html#timer-objects. Ví dụ. bạn có thể làm cho một bộ đếm thời gian, gọi một chức năng mà đóng thread? –

Trả lời

4

Câu trả lời ngắn: Chỉ cần chắc def run() kết thúc. Vì vậy, nếu bạn đang chờ đợi dữ liệu từ một ổ cắm, hãy làm điều đó với thời gian chờ, sau đó nếu thời gian chờ xảy ra chỉ phá vỡ trong khi bạn nên có, và các chủ đề sẽ bị giết.

Bạn có thể kiểm tra từ chủ đề chính nếu luồng còn sống bằng phương thức isAlive().

+0

Đây thực sự là cách * hợp lý duy nhất để thực hiện việc này. – Arafangion

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