Questa classe rappresenta un attivit� che funziona in un thread di controllo separato. Esistono due modi per specificare l'attivit�: passando un oggetto chiamabile al costruttore o sovrascrivendo il metodo run() in una sottoclasse. Nessun altro metodo (eccetto per il costruttore) dovrebbe essere sovrascritto in una sottoclasse. In altre parole, sovrascrivere solo i metodi __init__() e run() di questa classe.
Una volta che l'oggetto thread � stato creato, la sua attivit� deve essere iniziata chiamando il metodo start() del thread. Questi invoca il metodo run() in un thread di controllo separato.
Una volta che l'attivit� del thread � iniziata, il thread � considerato 'vivo' e 'attivo' (questi concetti sono quasi, ma non proprio, gli stessi; la loro definizione � intenzionalmente qualcosa di vago). Smette di essere vivo e attivo quando il suo metodo run() termina - o normalmente, o sollevando un'eccezione non gestita. Il metodo isAlive() controlla se il thread � vivo.
Altri thread possono chiamare il metodo join() di un altro thread. Questo blocca il thread chiamante fino a che termini il thread il cui metodo join() � stato chiamato.
Un thread ha un nome. Il nome pu� essere passato al costruttore, impostato con il metodo setName() e ottenuto con il metodo getName().
Un thread pu� essere etichettato come un ``thread demone''. Il significato di questa etichetta � che l'intero programma Python termina quando sono rimasti solo thread demoni. Il valore iniziale viene ereditato dal thread creatore. L'etichetta pu� essere impostata con il metodo setDaemon() ed ottenuta con il metodo isDaemon().
Esiste un oggetto ``thread principale''; questo corrisponde al thread iniziale di controllo nel programma Python. Non � un thread demone.
Esiste la possibilit� che vengano creati ``oggetti thread dummy''. Essi sono oggetti thread corrispondenti a ``thread alieni''. Questi ultimi sono thread di controllo nati all'esterno del modulo threading, come quelli generati direttamente dal codice C. Gli oggetti thread dummy hanno funzionalit� limitate; sono sempre considerati vivi, attivi e demonici, e su di essi non si pu� fare il join(). Essi non vengono mai cancellati, visto che � impossibile identificare la terminazione dei thread alieni.
| group=None, target=None, name=None, args=(), kwargs={}) |
group dovrebbe essere None; È riservato per estensioni
future quando una classe ThreadGroup sar� implementata.
target � l'oggetto chiamabile che sar� invocato dal metodo
run(). Predefinito � None, che significa che nulla
viene chiamato.
name � il nome del thread. Automaticamente, viene costruito un nome univoco nella forma ``Thread-N'' dove N � un piccolo numero decimale.
args � la tupla di argomenti per invocare target.
Il valore predefinito � ().
kwargs � un dizionario di argomenti a parola chiave per
l'invocazione target. Il valore predefinito � {}.
Se la sottoclasse sovrascrive il costruttore, deve essere sicura di
invocare il costruttore della classe base (Thread.__init__())
prima di fare qualsiasi altre cosa al thread.
| ) |
Deve essere chiamato almeno una volta per oggetto thread. Si occupa di far invocare il metodo run() dell'oggetto in un thread di controllo separato.
| ) |
Si pu� sovrascrivere questo metodo in una sottoclasse. Il metodo standard run() invoca l'oggetto chiamabile passato al costruttore dell'oggetto come argomento target, se � stato passato, con argomenti sequenziali ed a parola chiave presi rispettivamente dagli argomenti args e kwargs.
| [timeout]) |
Quando l'argomento timeout � presente e diverso da None,
dovrebbe essere un numero in virgola mobile che specifica un
timeout per l'operazione in secondi (o una frazione di questi).
Su un thread pu� essere chiamata join() pi� volte.
Un thread non pu� effettuare join() su se stesso perch� questo causerebbe un deadlock.
Tentare di fare la join() su un thread prima che sia stato lanciato rappresenta un errore.
| ) |
| name) |
Il nome � una stringa usata per soli scopi identificativi. Non ha semantica. Thread multipli possono avere lo stesso nome. Il nome iniziale � impostato dal costruttore.
| ) |
Detto brutalmente, un thread � vivo dal momento in cui il metodo start() ritorna fino a che termina il suo metodo run().
| ) |
| daemonic) |
Il valore iniziale � ereditato dal thread creatore.
L'intero programma Python esce quando non � rimasto alcun thread non-demonico.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.