Esempio di pipe di Python

Esempio di pipe di Python
Python è un linguaggio ricco di funzionalità che supporta tutti i concetti di programmazione più recenti e tradizionali. L'uso dei tubi rientra nel concetto di comunicazione tra process, in cui due o più processi si scambiano dati o informazioni tra loro. Ciò accade solo quando due o più processi sono in esecuzione contemporaneamente, descrivendo la funzionalità di elaborazione parallela. Per scoprire perché dovresti usare i tubi Python e capire come sono implementati in questo linguaggio di programmazione, dovrai leggere a fondo questo articolo.

Cos'è una pipa in Python?

Il processo che trasmette queste informazioni scrive al tubo, mentre il processo che riceve queste informazioni legge dal tubo. Proprio come altri linguaggi di programmazione, Python supporta anche l'implementazione dei tubi.

Perché dovrei usare un tubo in Python?

Sappiamo tutti che la comunicazione tra process è un concetto di programmazione molto importante. Poiché è stato introdotto il concetto di elaborazione parallela, la funzionalità e la potenza dei computer si sono ampliate in larga misura. Questo concetto ci ha permesso di eseguire più processi alla volta che può funzionare in modo indipendente. Tuttavia, a volte vogliamo un processo per trasmettere alcune informazioni a un altro che necessita di ulteriori elaborazioni. È qui che i tubi di Python sono utili.

Un tubo in Python può essere facilmente utilizzato per trasmettere informazioni da un'estremità all'altra. Ciò consente a due processi di scambiare dati tra loro in modo molto conveniente. L'unica cosa che deve essere curata durante l'implementazione di tubi in Python o, per questo, in qualsiasi altro linguaggio di programmazione è che una volta che un processo si sta scrivendo al tubo, il descrittore dei file di lettura deve essere bloccato. Allo stesso modo, quando un processo viene letto dal tubo, il descrittore dei file di scrittura deve essere bloccato. Questo viene fatto per garantire l'integrità dei dati e che i dati siano sincronizzati tra i processi di lettura e scrittura.

Per gettare ulteriore luce sull'implementazione dei tubi in Python, dovresti passare attraverso l'esempio seguente che abbiamo formulato per te per imparare efficacemente l'uso dei tubi in Python.

Nota: è possibile utilizzare l'IDE SPYDER per implementare un programma in Python utilizzando Windows 10 o qualsiasi distribuzione di Linux; Tuttavia, il "sistema operativo.La funzione fork () "che viene utilizzata nell'esempio seguente è supportata solo da Linux. Pertanto, non sarai in grado di implementare il seguente codice in Windows 10.

Esempio di utilizzo di un tubo in Python:

Per rappresentare l'uso di una pipa in Python, volevamo implementare un codice in grado di consentire la comunicazione tra un processo genitore e un processo figlio utilizzando una pipa. Per facilitare tale comunicazione, dovrai dare un'occhiata al seguente codice:

In questo codice Python per l'implementazione di pipe, abbiamo importato per la prima volta il modulo "OS" di Python, che faciliterà questa implementazione. Quindi, abbiamo creato un tubo con il "sistema operativo.Funzione di pipe () "e l'hanno assegnata ai due descrittori di file" R "e" W "per la lettura e la scrittura dei dati, rispettivamente. Dopodiché, volevamo generare un processo di figlio con l'ID del processo, io.e., PID che può essere fatto con l'aiuto del "sistema operativo.Funzione fork () ". Quindi, abbiamo un'istruzione "if" che opera sul PID maggiore di "0" i.e., Se il PID è quello di un processo genitore, solo questo blocco "if" verrà eseguito. All'interno di questo blocco "if", il processo genitore blocca per primo il descrittore di file "leggi", i.e., r, in modo che il processo genitore possa facilmente scrivere sul tubo senza interruzioni. Questo viene fatto facendo uso del "sistema operativo.Funzione Close (R) ".

Successivamente, volevamo avvisare l'utente tramite la console che il processo genitore ora sta scrivendo al tubo per il quale abbiamo visualizzato un messaggio utilizzando il comando "stampa". Quindi, abbiamo una variabile "testo" a cui abbiamo assegnato il testo che il processo genitore desidera scrivere al tubo.

Dopodiché, abbiamo chiamato il "sistema operativo.funzione write () ". Questa funzione accetta due argomenti, io.e., il descrittore dei file di scrittura e il testo da scrivere sul tubo. Quando viene chiamata questa funzione, il testo verrà automaticamente scritto nel tubo. Successivamente, volevamo visualizzare il testo scritto sul tubo sulla nostra console, che faremo con l'aiuto della funzione "stampa" decodificando la variabile di testo.

Quindi, esiste un'affermazione "else" che funzionerà se il PID non è maggiore di "0" i.e., Il PID è quello di un processo di bambino; Solo allora verrà eseguito questo blocco "altro". All'interno di questo blocco "altro", il processo figlio blocca per primo il descrittore di file "scrivi", i.e., w, per leggere facilmente il testo scritto sul tubo senza alcuna modifica. Questo viene fatto facendo uso del "sistema operativo.Funzione Close (W) ".

Successivamente, volevamo avvisare l'utente attraverso la console che il processo figlio sta leggendo dal tubo per il quale abbiamo visualizzato un messaggio utilizzando il comando "stampa". Quindi, abbiamo assegnato il valore del descrittore dei file di lettura aperto "R" al nostro descrittore di file di lettura inizialmente dichiarato. Infine, volevamo visualizzare il testo letto dal tubo dal processo di nostro figlio sulla nostra console utilizzando la funzione "stampa". Dopo aver scritto questo codice Python nell'IDE Spyder, l'abbiamo semplicemente salvato e poi eseguito.

Una volta eseguito questo codice, il suo output si è rivelato in qualche modo mostrato nell'immagine qui sotto:

In questo output, puoi vedere che il primo messaggio apparso sulla console è stato "Il processo dei genitori scrive:", il che implica che attualmente il descrittore dei file di lettura è bloccato mentre il processo principale sta scrivendo sul tubo. Il secondo messaggio che è apparso sulla console è stato “Testo scritto: benvenuto mio figlio!"Che rappresenta il testo scritto sul tubo dal processo genitore. Quindi, il terzo messaggio che è stato visualizzato nell'output è stato il "Processo di figlio legge:", il che implica che il descrittore dei file di scrittura è attualmente bloccato mentre il processo figlio sta leggendo dal tubo. Infine, il quarto messaggio che è stato visualizzato sulla console è stato “Leggi il testo: benvenuto mio figlio!"Che rappresenta semplicemente il testo che è stato letto dal tubo dal processo figlio.

In questo modo, puoi lavorare con i tubi di Python e creare esempi ancora più complessi in cui è possibile rappresentare una comunicazione a tutti gli effetti tra i processi genitore e figlio.

Conclusione:

Abbiamo parlato brevemente dei tubi di Python all'inizio di questo articolo. Poi siamo andati un po 'oltre spiegando come funzionano e perché dovremmo usarli in primo luogo. Successivamente, abbiamo spiegato come i tubi potrebbero essere implementati in Python con l'aiuto di un utile esempio in cui un processo trasmette alcune informazioni a un altro. Una volta esaminato questo esempio, afferrerai rapidamente il modo in cui i tubi sono implementati in Python e quindi sarai in grado di implementare programmi più complessi in cui due processi comunicano tra loro.