2012-02-02 29 views
5

tôi có thể thiếu một cái gì đó ngớ ngẩn, nhưng ive chạy mã của tôi trong PythonWin và nó hoạt động, nhưng khi tôi chạy nó trong dòng lệnh nó freakspython sẽ không tạo chuỗi?

import time, thread 
def print_t(name, delay): 
    while 1: 
     time.sleep(delay) 
     print name 
try: 
    thread.start_new_thread(print_t,("First Message",1,)) 
    thread.start_new_thread(print_t,("Second Message",2,)) 
except Exception as e: 
    print e 

Unhandled exception in thread started by 
sys.excepthook is missing 
lost sys.stderr 

Unhandled exception in thread started by 
sys.excepthook is missing 
lost sys.stderr 
+0

Một điều bạn có thể muốn biết là 'import pdb; pdb.pm()' sẽ mở trình gỡ lỗi tại điểm ngoại lệ cuối cùng. – Marcin

Trả lời

6

Trường hợp ngoại lệ xảy ra khi các chủ đề chính (một trong những bắt đầu các chủ đề khác) kết thúc. Trong mã của bạn, luồng chính thoát khỏi bất kỳ chủ đề phụ nào của bạn (được tạo bởi start_new_thread) kết thúc. Các giải pháp là chờ đợi tại thread chính của bạn cho đến khi các chủ đề con kết thúc.

Xem các cuộc thảo luận Simple threading in Python 2.6 using thread.start_new_thread()

2

Đó là vì các chủ đề chính kết thúc, và khi bạn sử dụng thread insted của threading, các "chủ đề trẻ em" chết là tốt.

Sử dụng mô-đun threading tốt hơn.

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