¿Qué es una tubería en Python??
El proceso que pasa sobre esta información escribe en la tubería, mientras que el proceso que recibe esta información se lee desde la tubería. Al igual que otros lenguajes de programación, Python también admite la implementación de tuberías.
¿Por qué debería usar una tubería en Python??
Todos sabemos que la comunicación entre procesos es un concepto de programación muy importante. Dado que se introdujo el concepto de procesamiento paralelo, la funcionalidad y el poder de las computadoras se han expandido en gran medida. Este concepto nos permitió ejecutar múltiples procesos a la vez que puede funcionar de forma independiente. Sin embargo, a veces queremos un proceso para transmitir alguna información a otra que necesita un procesamiento adicional. Aquí es donde las tuberías de Python son útiles.
Una tubería en Python se puede usar fácilmente para transmitir información de un extremo a otro. Esto permite que dos procesos intercambien datos entre sí muy convenientemente. Lo único que se debe cuidar al implementar tuberías en Python o, para el caso, en cualquier otro lenguaje de programación es que una vez que se escribe un proceso en la tubería, el descriptor de archivo de lectura debe estar bloqueado. Del mismo modo, cuando un proceso se está leyendo desde la tubería, el descriptor del archivo de escritura debe bloquearse. Esto se hace para garantizar la integridad de los datos y que los datos se sincronizan entre los procesos de lectura y escritura.
Para arrojar más luz sobre la implementación de tuberías en Python, debe pasar por el siguiente ejemplo que hemos formulado para que aprenda el uso de tuberías en Python de manera efectiva.
Nota: Puede usar el IDE Spyder para implementar un programa en Python utilizando Windows 10 o cualquier distribución de Linux; Sin embargo, el "OS.FORK () "La función que se usa en el siguiente ejemplo solo es compatible con Linux. Por lo tanto, no podrá implementar el siguiente código en Windows 10.
Ejemplo del uso de una tubería en Python:
Para representar el uso de una tubería en Python, queríamos implementar un código que sea capaz de permitir la comunicación entre un proceso principal y un proceso infantil haciendo uso de una tubería. Para facilitar dicha comunicación, tendrá que echar un vistazo al siguiente código:
En este código de Python para la implementación de tuberías, primero hemos importado el módulo "OS" de Python, que facilitará esta implementación. Luego, hemos creado una tubería con el "sistema operativo.Función Pipe () "y la ha asignado a los dos descriptores de archivos" R "y" W "para leer y escribir datos, respectivamente. Después de eso, queríamos generar un proceso infantil con la identificación del proceso, yo.mi., PID que se puede hacer con la ayuda del "sistema operativo.Función Fork () ". Entonces, tenemos una declaración "si" que funciona en el PID mayor que "0" I.mi., Si el PID es el de un proceso principal, solo entonces se ejecutará este bloque "si". Dentro de este bloque "si", el proceso principal primero bloquea el descriptor de archivo "leer", yo.mi., r, para que el proceso principal pueda escribir fácilmente en la tubería sin interrupciones. Esto se hace haciendo uso del "sistema operativo.Función Cerrar (R) ".
Después de eso, queríamos notificar al usuario a través de la consola que el proceso principal ahora está escribiendo en la tubería para la que hemos mostrado un mensaje utilizando el comando "Imprimir". Luego, tenemos una variable de "texto" a la que hemos asignado el texto que el proceso principal quiere escribir en la tubería.
Después de eso, hemos llamado al "sistema operativo.Función Write () ". Esta función acepta dos argumentos, yo.mi., El descriptor de archivo de escritura y el texto que se escribirá en la tubería. Cuando se llama a esta función, el texto se escribirá automáticamente en la tubería. Después de eso, queríamos mostrar el texto escrito en la tubería en nuestra consola, lo que haremos con la ayuda de la función "Imprimir" decodificando la variable de texto.
Entonces, hay una declaración "más" que funcionará si el PID no es mayor que "0" I.mi., El PID es el de un proceso infantil; Solo entonces se ejecutará este bloque "más". Dentro de este bloque "más", el proceso infantil primero bloquea el descriptor de archivo "escribir", yo.mi., w, para leer fácilmente el texto escrito en la tubería sin ninguna modificación. Esto se hace haciendo uso del "sistema operativo.Cerrar (w) "función.
Después de eso, queríamos notificar al usuario a través de la consola que el proceso infantil ahora está leyendo desde la tubería para la que hemos mostrado un mensaje utilizando el comando "Imprimir". Luego, hemos asignado el valor del descriptor de archivo de lectura abierto "R" a nuestro descriptor de archivo de lectura inicialmente declarado. Finalmente, queríamos mostrar el texto leído desde la tubería por nuestro proceso de hijo en nuestra consola utilizando la función "Imprimir". Después de escribir este código de Python en el IDE Spyder, simplemente lo hemos guardado y luego lo hemos ejecutado.
Una vez que se ejecutó este código, su salida resultó mostrarse en la imagen a continuación:
En esta salida, puede ver que el primer mensaje que apareció en la consola fue "El proceso principal escribe:" lo que implica que actualmente, el descriptor de archivo de lectura está bloqueado a medida que el proceso principal está escribiendo en la tubería. El segundo mensaje que apareció en la consola fue "Texto escrito: Bienvenido a mi hijo!"Que representa el texto escrito a la tubería por el proceso principal. Luego, el tercer mensaje que se mostró en la salida fue "lecturas del proceso infantil", lo que implica que el descriptor del archivo de escritura está bloqueado actualmente mientras el proceso infantil está leyendo desde la tubería. Finalmente, el cuarto mensaje que se mostró en la consola fue "Leer texto: Bienvenido a mi hijo!"Que simplemente representa el texto que fue leído de la tubería por el proceso infantil.
De esta manera, puede trabajar con tuberías en Python y crear ejemplos aún más complejos en los que pueda representar una comunicación completa entre los procesos de los padres y los hijos.
Conclusión:
Hablamos brevemente sobre las tuberías en Python al comienzo de este artículo. Luego fuimos un poco más allá explicando cómo funcionan y por qué deberíamos usarlos en primer lugar. Después de eso, explicamos cómo las tuberías podrían implementarse en Python con la ayuda de un ejemplo útil en el que un proceso transmite cierta información a otra. Una vez que revise este ejemplo, comprenderá rápidamente cómo se implementan las tuberías en Python, y luego podrá implementar programas más complejos en los que dos procesos se comunican entre sí.