Threading in Python: scopri come lavorare con i thread in Python



Questo articolo sul threading in Python ti dirà cosa sono i thread, i suoi tipi, come avviarli e utilizzarli nel miglior modo possibile

Oggi, è uno dei linguaggi di programmazione più amati in tutto il mondo. Sin dal suo inizio negli anni '90, ha raccolto un enorme seguito e appassionati e programmatori che lavorano ogni giorno per migliorare questo linguaggio di programmazione. Tra le molte funzionalità integrate nell'ecosistema Python, quella che spicca di più è Threading. Pertanto in questo articolo parleremo di Threading in Python, di come utilizzarlo insieme ai suoi vantaggi e svantaggi.

I seguenti suggerimenti saranno trattati in questo articolo,





Cominciamo

Threading in Python

Cos'è un thread in Python?

Un thread in Python può essere semplicemente definito come un flusso di esecuzione separato. Ciò significa semplicemente che nel tuo programma verranno eseguiti due processi diversi nello stesso tempo. Un aspetto interessante del threading in Python è il fatto che, dopo la versione 3, più thread in Python non vengono eseguiti contemporaneamente, ma semplicemente sembrano.



Sebbene sia una sensazione incredibile eseguire due processi diversi contemporaneamente, è necessario capire che l'attuale versione di Python 3 e versioni successive è codificata in modo tale che solo il processo può essere eseguito in un dato momento. Se tuttavia hai bisogno di due o più processi contemporaneamente in CPython, devi codificare parte del tuo codice anche in altri linguaggi, come C, C ++ e Java, e quindi eseguirli attraverso il multi threading in Python.

Uno dei vantaggi più noti del threading in Python è la sua capacità di fornire un guadagno in termini di chiarezza del design.

Prima di avere un'idea del Threading in Python, vediamo come avviare un thread,



Avvio di un thread in Python

Ora che sei abituato alla definizione di un thread in Python, diamo un'occhiata a un esempio su come puoi creare il tuo thread in Python. Per creare un thread in Python, devi prima importare la libreria dei thread e quindi istruirlo a start () come mostrato nell'esempio seguente:

import logging import threading import time def thread_function (name): logging.info ('Thread% s: starting', name) time.sleep (2) logging.info ('Thread% s: finish', name) if __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') logging.info ( 'Main & ampampampnbsp & ampampampnbsp: prima di creare thread') x = threading.Thread (target = thread_function, args = (1,)) logging.info ('Main & ampampampnbsp & ampampampnbsp: before running thread') x.start () logging.info ('Main & ampampampnbsp & ampampampnbsp: aspetta che il thread finisca ') # x.join () logging.info (' Main & ampampampnbsp & ampampampnbsp: tutto fatto ')

Produzione

Output - Threading in Python - Edureka

come eseguire eclipse su Windows

Quando esegui un thread in Python, lo passi come una funzione che contiene un elenco di argomenti che deve eseguire. Nell'esempio condiviso sopra, stai istruendo Python per eseguire il thread, thread_function () e passarlo a 1 come argomento.

Quando esegui il programma sopra, l'output sarà simile a questo.

La parte successiva di questo articolo su 'Threading in Python' ci permette di vedere cosa sono i thread daemon,

Cosa sono i thread daemon?

Nella terminologia tecnica, il daemon può essere definito come un processo che viene eseguito principalmente in background. Tuttavia, in Python, un thread daemon ha un significato molto specifico. In Python un thread daemon si spegnerà nel momento in cui il programma è uscito, sebbene in altri linguaggi di programmazione continuerà a funzionare in background. Se in un determinato programma un thread non è programmato come thread daemon, l'interprete attenderà che finisca la sua operazione e quindi spegnerà solo l'interprete.

Per comprendere meglio questo concetto dai un'occhiata all'esempio sopra. Nella penultima riga, il programma attende alcuni secondi dopo aver terminato tutte le sue attività. Questo perché sta aspettando che il thread non demonico finisca la sua operazione e quindi esca dall'interfaccia. Una volta che il thread termina la sua operazione, solo il programma esce.

Ora modifichiamo il programma sopra e vediamo cosa succede, se inseriamo un thread daemon nel codice.

Nuovo codice: x = threading.Thread (target = thread_function, args = (1,), daemon = True)

Quando esegui il programma sopra con le modifiche apportate, avrà un aspetto simile a questo.

La differenza tra queste due uscite è che l'ultima riga manca dall'ultima. Thread_function () non ha avuto la possibilità di completarsi, perché abbiamo inserito un thread daemon e non appena ha raggiunto la fine, è uscito dal programma.

Unire una discussione

Ora che hai appreso il concetto di creare un thread in Python, insieme al concetto di un thread demoniaco, scopriamo come puoi unire i thread in Python.

Usando la funzione join () in Python puoi unire due thread diversi e anche istruire uno ad aspettare l'altro finché non termina la sua esecuzione. Questa funzione sarà spesso utile quando si codificano grandi applicazioni e tutti i processi devono essere eseguiti in un ordine particolare

La parte finale di questo articolo su 'Threading in Python' ti mostrerà i thread multipli funzionanti,

Lavorare con più thread

Negli esempi precedenti abbiamo parlato di come puoi lavorare con due thread contemporaneamente. Ma cosa succede se in una determinata situazione, è necessario lavorare con più thread contemporaneamente. Per una migliore comprensione della situazione, dai un'occhiata all'esempio seguente.

import logging import threading import time def thread_function (name): logging.info ('Thread% s: starting', name) time.sleep (2) logging.info ('Thread% s: finish', name) if __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') threads = list ( ) for index in range (3): logging.info ('Main & ampampampnbsp & ampampampnbsp: create and start thread% d.', index) x = threading.Thread (target = thread_function, args = (index,)) threads.append (x ) x.start () per index, thread in enumerate (thread): logging.info ('Main & ampampampnbsp & ampampampnbsp: before join thread% d.', index) thread.join () logging.info ('Main & ampampampnbsp & ampampampnbsp: thread% d fatto ', indice)

Produzione

Nel programma sopra abbiamo seguito la stessa procedura di importare la libreria dei thread, avviare il thread, creare più thread e quindi utilizzare la funzione join () per combinare tutti insieme ed essere eseguiti in un ordine particolare.

Quando esegui il programma sopra, il risultato sarà simile a questo.

Conclusione

È una delle funzionalità più utili di Python. Usandolo nel modo corretto, puoi rendere l'intero processo di codifica molto più semplice ed efficiente. Dall'articolo precedente ci auguriamo che tu abbia appreso le basi del threading e che continuerai a utilizzarlo nella tua programmazione quotidiana.

Quindi questo è ragazzi, spero che questo articolo vi sia piaciuto.

Per ottenere una conoscenza approfondita di Python e delle sue varie applicazioni, puoi farlo per formazione online dal vivo con supporto 24 ore su 24, 7 giorni su 7 e accesso a vita.

Hai domande per noi? Menzionali nella sezione commenti di questo articolo e ti risponderemo.