2012-11-22 14 views

cevap

11

Şunu deneyelim:

import threading 
import time 

class ThreadWorker(threading.Thread): 

    def run(self): 
     print "Statement from a thread!" 
     raise Dead 


class Main: 

    def __init__(self): 
     print "initializing the thread" 
     t = ThreadWorker() 
     t.start() 
     time.sleep(2) 
     print "Did it work?" 


class Dead(Exception): pass 



Main() 
Yukarıdaki kod aşağıdaki sonuçları verir

:

> initializing the thread 
> Statement from a thread! 
> Exception in thread 
> Thread-1: Traceback (most recent call last): File 
> "C:\Python27\lib\threading.py", line 551, in __bootstrap_inner 
>  self.run() File ".\pythreading.py", line 8, in run 
>  raise Dead Dead 
> ----- here the interpreter sleeps for 2 seconds ----- 
> Did it work? 

Yani, sorunun cevabı yükseltilmiş İstisna sadece iplik çöküyor olduğunu tüm programda değil. threading belgelerine

+0

Eşzamanlı iş parçacığı havuzu kullanıyorum. Bir iş parçacığı öldürülürse yeni bir iş parçacığı iş parçacığı havuzunda doğurur veya değil ??? –

5

: parçacığının aktivite başladıktan sonra

, iplik ‘canlı’ olarak kabul edilir. Run() yöntemi sonlandırıldığında ( ) normal olarak ya da işlenmemiş bir istisnayı yükselterek canlı kalmayı durdurur. Is_alive() yöntemi, iş parçacığının canlı olup olmadığını sınar.

Ve ayrıca:

iplik sonlandırır kadar

(zaman aşımı = Hiçbiri)

Bekle katılmak. Bu, join() yöntemi çağrılan iş parçacığı sonlandırılana kadar (veya normalde veya işlenmeyen bir istisna) çağrılan iş parçacığını engeller veya isteğe bağlı zaman aşımı gerçekleşene kadar engeller. Başka bir deyişle

, yakalanmamış istisna bir iş parçacığı sona erdirmek için bir yoldur ve iplik sözü üzerine ebeveynin join çağrısında algılanır.

İlgili konular