7.5 threading -- Interfaccia ad alto livello per i thread

Questo modulo realizza un interfaccia ad alto livello per i thread sulla base del modulo a basso livello thread.

Nel caso in cui non si possano usare i threading a causa della mancanza del modulo thread, viene fornito il modulo dummy_threading.

Questo modulo definisce le seguenti funzioni ed oggetti:

activeCount( )
Restituisce il numero di oggetti Thread attivi al momento. Il contatore restituito è uguale alla lunghezza della lista restituita da enumerate(). Una funzione che restituisce il numero di thread attivi al momento.

Condition( )
Una funzione factory che restituisce un nuovo oggetto di variabile di condizione. Una variabile di condizione permette ad uno o più thread di attendere fino a che non vengano notificati da altri thread.

currentThread( )
Restituisce l'oggetto Thread corrente, corrispondente al thread di controllo del chiamante. Se il thread di controllo del chiamante non è stato creato attraverso il modulo threading, viene restituito un oggetto thread fantoccio con funzionalità limitate.

enumerate( )
Restituisce una lista di tutti gli oggetti Thread attivi al momento. La lista include demoni thread, oggetti thread fantocci creati da currentThread(), ed il thread principale. Vengono esclusi i thread terminati ed i thread che non sono ancora stati lanciati.

Event( )
Una funzione factory che restituisce un oggetto evento. Un evento gestisce una opzione che può essere impostata a vero con il metodo set() e resettata a falso con il metodo clear(). Il metodo wait() si bloccca fino a che l'opzione è vera.

Lock( )
Una funzione factory che restituisce un nuovo oggetto lock primitivo. Una volta che viene acquisito da un thread, i successivi tentativi di acquisirlo si bloccano, fino al suo rilascio; ogni thread lo può rilasciare.

RLock( )
Una funzione factory che restituisce un nuovo oggetto lock rientrante. Un lock rientrante deve essere rilasciato dal thread che lo ha acquisito. Una volta che un thread ha acquisito un lock rientrante, lo stesso thread può acquisirlo di nuovo senza bloccarsi; il thread deve effettuare un rilascio per ogni acquisizione.

Semaphore( [value])
Una funzione factory che restituisce un nuovo oggetto semaforo. Un semaforo gestisce un contatore che rappresenta il numero di chiamate a release() meno il numero di chiamate ad acquire(), più un valore value iniziale. Il metodo acquire() si blocca se necessario fino a che non possa restituire senza rendere il contatore negativo. Se non viene passato, value è inizialmente 1.

BoundedSemaphore( [value])
Una funzione factory che restituisce un nuovo oggetto semaforo limitato. un semaforo limitato controlla che il suo valore corrente non ecceda il suo valore iniziale. Se ciò avviene, viene sollevata un'eccezione ValueError. In molte situazioni i semafori sono usati per vegliare su risorse con capacità limitate. Se il semaforo è rilasciato troppe volte è segno di un bug. Se non viene passato, value è inizialmente 1.

class Thread
Una classe che rappresenta un thread di controllo. Questa classe può essere derivata in maniera sicura in modo limitato.

class Timer
Un thread che esegue una funzione dopo che sia passato un intervallo di tempo specificato.

settrace( func)
Imposta una funzione di traccia per tutti i thread lanciati dal modulo threading. func sarà passata a sys.settrace() per ogni thread, prima che il suo metodo run() sia chiamato. Nuovo nella versione 2.3.

setprofile( func)
Imposta una funzione di profilo per tutti i thread lanciati dal modulo threading. func sarà passata a sys.setprofile() per ogni thread, prima che il suo metodo run() sia chiamato. Nuovo nella versione 2.3.

Le interfacce dettagliate per gli oggetti sono documentate sotto.

Il design di questo modulo è vagamente basato sul modello di threading di Java. Tuttavia, dove il Java pone lock e variabili di condizione come funzionamento basilare di ogni oggetto, in Python sono oggetti separati. La classe Thread di Python supporta un sottoinsieme del funzionamento della classe Thread di Java; al momento, non esistono priorità o gruppi di thread, i thread non possono essere distrutti, fermati, sospesi, riattivati o interrotti. I metodi statici della classe Thread di Java, quando implementati, sono progettati come funzioni a livello di modulo.

Tutti i metodi descritti sotto sono eseguiti atomicamente.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.