Secuencia de elementos de datos disponibles a lo largo del tiempo
En informática , un flujo es una secuencia de elementos de datos potencialmente ilimitados que se ponen a disposición a lo largo del tiempo. Un flujo puede considerarse como elementos en una cinta transportadora que se procesan de a uno por vez en lugar de en grandes lotes. Los flujos se procesan de manera diferente a los datos por lotes .
Las funciones normales no pueden operar sobre flujos en su totalidad porque estos tienen datos potencialmente ilimitados. Formalmente, los flujos son codatos (potencialmente ilimitados), no datos (que son finitos).
Las funciones que operan sobre un flujo que produce otro flujo se conocen como filtros y pueden conectarse en tuberías de manera análoga a la composición de funciones . Los filtros pueden operar sobre un elemento de un flujo a la vez o pueden basar un elemento de salida en múltiples elementos de entrada, como un promedio móvil .
Ejemplos
El término "flujo" se utiliza de varias maneras similares:
"Edición de secuencias", como en el caso de sed , awk y perl . La edición de secuencias procesa uno o más archivos en el lugar, sin tener que cargarlos en una interfaz de usuario. Un ejemplo de este uso es realizar una búsqueda y reemplazo de todos los archivos de un directorio desde la línea de comandos.
En Unix y sistemas relacionados basados en el lenguaje C , un flujo es una fuente o un receptor de datos, generalmente bytes o caracteres individuales . Los flujos son una abstracción que se utiliza al leer o escribir archivos, o al comunicarse a través de conectores de red . Los flujos estándar son tres flujos disponibles para todos los programas.
Los dispositivos de E/S se pueden interpretar como flujos, ya que producen o consumen datos potencialmente ilimitados a lo largo del tiempo.
En el lenguaje Scheme y otros, un flujo es una secuencia de elementos de datos evaluada de forma diferida o retrasada . Un flujo se puede utilizar de forma similar a una lista, pero los elementos posteriores solo se calculan cuando son necesarios. Por lo tanto, los flujos pueden representar secuencias y series infinitas . [1]
El término "stream" también se aplica a las bifurcaciones del sistema de archivos , donde varios conjuntos de datos se asocian con un único nombre de archivo. La mayoría de las veces, hay un flujo principal que compone los datos normales del archivo, mientras que los flujos adicionales contienen metadatos . Aquí, "stream" se utiliza para indicar "datos de tamaño variable", en contraposición a los metadatos de tamaño fijo, como los atributos extendidos , pero difiere de "stream" como se usa de otra manera, ya que significa "datos disponibles a lo largo del tiempo, potencialmente infinitos".