tôi có mã này:Làm thế nào để sử dụng nhiều luồng
import thread
def print_out(m1, m2):
print m1
print m2
print "\n"
for num in range(0, 10):
thread.start_new_thread(print_out, ('a', 'b'))
Tôi muốn tạo 10 chủ đề, mỗi chủ đề chạy chức năng print_out
, nhưng tôi đã thất bại. Các lỗi như sau:
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
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
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
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
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
'thread.join()' được sử dụng để chờ cho đến khi chuỗi kết thúc. và tôi nhận thấy rằng nếu tôi không thêm hai dòng mã cuối cùng: 'cho thread trong thread: thread.join()', chương trình cũng chạy tốt, và mỗi thread được thực hiện tại 'thread.start()' theo debug , IOW nếu tôi không thêm 'time.time (0.1)', tôi không cần thêm mã 'thread.join()' vì chương trình sẽ tự động chờ thread để hoàn thành nhiệm vụ của nó tại 'thread.start()', phải không? – Searene
@Mark Bạn không cần thêm 'time.sleep (0.1)' nào cả. Điều đó không cần thiết. Có, bạn có thể loại bỏ mã gọi 'join' và môi trường Python sẽ chờ tất cả các luồng hoàn thành trước khi chấm dứt thực hiện. Tuy nhiên, tôi đã thêm các cuộc gọi vào 'join' vì tôi hy vọng rằng bạn sẽ cần, tại một thời điểm nào đó trong tương lai, để biết cách đợi một luồng để hoàn thành việc thực hiện nó. Nhưng có, bạn có thể đơn giản bỏ qua những lời gọi đó để 'join' trong ví dụ đơn giản này. –