
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 la programación orientada a objetos , los flujos de entrada generalmente se implementan como iteradores .
- 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]
- En la biblioteca estándar de Smalltalk y también en otros lenguajes de programación , un flujo es un iterador externo . Al igual que en Scheme, los flujos pueden representar secuencias finitas o infinitas.
- Procesamiento de flujo : en el procesamiento paralelo , especialmente en el procesamiento gráfico, el término flujo se aplica tanto al hardware como al software . Allí define el flujo cuasi continuo de datos que se procesa en un lenguaje de programación de flujo de datos tan pronto como el estado del programa cumple la condición inicial del flujo.
Aplicaciones
Los flujos se pueden utilizar como tipo de datos subyacente para los canales en la comunicación entre procesos .
Otros usos
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, que significa "datos disponibles a lo largo del tiempo, potencialmente infinitos".
Véase también
- Flujo de bits
- Codatos
- Flujo de datos
- Minería de flujo de datos
- Flujo de tráfico (redes informáticas)
- Toma de red
- Algoritmo de transmisión
- Transmisión de medios
- Procesamiento de flujo
Referencias
- ^ SRFI 41: Arroyos
Enlaces externos
- Un algoritmo de diferencia L1 aproximado para flujos de datos masivos, 1995 Feigenbaum et al.