English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un thread nel campo dell'informatica è un gruppo di istruzioni che può essere gestito indipendentemente dal scheduler, che fa parte del sistema operativo.
La funzione principale dei thread è eseguire più thread contemporaneamente. Thread significa diversi compiti, chiamate di funzione nel programma e thread che eseguono contemporaneamente, il che non significa che eseguono su computer diversi.
Si utilizzano thread multipli in entrambi i casi.
Quando l'output del sottoprogramma deve essere combinato con il programma principale.
Quando il programma principale contiene codice indipendente l'uno dall'altro.
Python fornisce un modulo thread molto potente e anche supporto avanzato per i thread.
Il modulo thread definisce molte funzioni che vengono utilizzate per ottenere dati relativi ai thread e queste funzioni si eseguono automaticamente.
threading.active_count()
Questa funzione restituisce il numero di oggetti Thread attivi. In questo caso, il conteggio restituito è uguale alla lunghezza della lista restituita.enumerate()
.
threading.current_thread()
Questa funzione restituisce l'oggetto Thread corrente, che corrisponde al thread di controllo chiamante.
threading.get_ident()
Questa funzione restituisce l'identificatore del thread corrente. È un intero non zero.
threading.enumerate()
Questa funzione restituisce l'elenco di tutti gli oggetti Thread attivi (inclusi i thread守护) del thread corrente, la funzione current_thread() crea thread virtuali e thread principali, e esclude i thread terminati e non avviati.
threading.main_thread()
Questa funzione restituisce l'oggetto thread principale.
threading.settrace(func)
Dopo aver avviato tutte le thread dal modulo thread, impostare la funzione di tracciamento.run()
Prima di chiamare il metodo, questa funzione passerà a ciascun thread il trace() di sys.
threading.setprofile(func)
Dopo aver avviato tutte le thread dal modulo thread, impostare la funzione di configurazione del file. Inrun()
Prima di chiamare il metodo, questa funzione passerà a sys.setprofile() per ogni thread.
threading.stack_size([size])
La funzione restituisce la dimensione della pila del thread e viene utilizzata quando si crea un nuovo thread.
THREAD_TIMEOUT_MAX
Questa è una costante che ha il valore massimo del timeout per le funzioni bloccanti (Lock.acquire(), RLock.acquire(), Condition.wait() ecc.).
import threading def trace_function(): print("Passing the trace function") def profile(): print("PROFILE THREAD: " + str(threading.current_thread().getName())) class mythread(threading.Thread): def __init__(self, thread_name, thread_ID): threading.Thread.__init__(self) self.thread_name = thread_name self.thread_ID = thread_ID def run(self): print(str(self.thread_ID)); print("ACTIVE THREADS ARE: " + str(threading.active_count())) print("CURRENT THREAD IS: " + str(threading.current_thread().getName())) my_thread1 = mythread("PP", 500) my_thread2 = mythread("PythonProgram", 1000); print("NAME OF THE MAIN THREAD: " + str(threading.main_thread().getName())) print("IDENTIFICATION OF MAIN THREAD: " + str(threading.get_ident())) print("DIMENSIONE STACK = " + str(threading.stack_size())) print(threading.settrace(trace_function())) threading.setprofile(profile()) my_thread1.start() my_thread2.start() print("ELenco di enumerazione: ") print(threading.enumerate()) print("EXIT")
Risultato di output
NOME THREAD PRINCIPALE: MainThread IDENTIFICAZIONE THREAD PRINCIPALE: 5436 DIMENSIONE STACK = 0 Passaggio della funzione trace None PROFILO THREAD: MainThread 500 1000ELenco di enumerazione: THREAD ATTIVI: 6 [<_MainThread(MainThread, avviato 5436)>, <Thread(Thread-4, avviato daemon 1960)>, <Heartbeat(Thread-5, avviato daemon 6452)>, <HistorySavingThread(IPythonHistorySavingThread, avviato 4304)>, <mythread(Thread-8, avviato 8460)>, <mythread(Thread-9, avviato 4668)>] EXIT THREAD ATTUALE: Thread-8 THREAD ATTIVI: 5 THREAD ATTUALE: Thread-9