Stream:
Stream 은 데이터를 한 번에 모두 처리하지 않고, 일정한 크기의 조각(chunk) 으로 나누어 순차적으로 흐르게 하며 처리하는 방식 또는 그 대상의 abstraction (추상화한 개념)임.
파일, 네트워크 소켓, 메모리 등 입출력(I/O)이 가능한 모든 객체를 byte 또는 bit (혹은 문자)의 연속적인 흐름으로 다루는 데 사용됨.
다음과 같은 특짐을 가짐.
- 추상화된 데이터 흐름: 파일, 네트워크, 메모리 등 다양한 I/O 자원을 동일한 방식으로 다룰 수 있도록 abstraction.
- 순차 처리: 데이터를 순서대로 읽거나 쓰며, 현재 처리 위치(file pointer)를 유지함.
- 지연 처리: 데이터 전체를 한 번에 메모리에 올리는 것이 아니라, 필요한 만큼만 순차적으로 처리함.
- 버퍼 기반 동작: 내부적으로는 buffer를 사용하여 I/O 효율성을 높임.
- 대용량 데이터 처리에 유리: 데이터를 일정한 chunk로 나누어 순차적으로 처리하므로 영상, 로그, 대규모 텍스트 파일 등도 메모리 부담 없이 처리 가능.

참고: Stream에 대한 내용을 Standard IO Library 을 통해 설명하고 있는 글
https://dsaint31.me/mkdocs_site/CE/ch10/ce10_2_04_stdio/#stream-or-io-stream
BME
I/O Stream 과 Standard I/O Library 1. Stream 이란? 스트림(stream) 이라는 개념은 데이터의 흐름을 의미하며, 이를 bit(비트) 또는 byte(바이트)의 연속으로 생각할 수 있음. 종종 bit stream 또는 byte stream 이라고
dsaint31.me
1. 프로그래밍에서의 stream
- 입력 스트림(Input Stream):
- 데이터를 프로그램으로 가져오는 stream (예: 키보드입력, 파일 읽기, 네트워크 수신)
- OS에서 Process 에 기본으로 할당되는
stdin이 대표적인 예. - 숫자로 0 (정확히는 file descriptor가 0임)으로 식별되기도 함.
- Python에선 sys.stdin 으로 표준 입력스트림을 가리킴.
- 출력 스트림(Output Stream):
- 데이터를 외부로 보내는 흐름 (예: 파일 쓰기, 네트워크 전송)
- Python의 경우
- file로 연결된 경우 full-buffered 로 buffer가 다 차야 출력이 이루어짐.
- console로 연결된 경우 line-buffered로 linefeed에서 flush가 이루어짐.
- sys.stdout 이 표준 출력스트림을 가리킴.
- OS에서 Process 에 기본으로 할당되는
stdout이 대표적인 예. - 숫자로 1 (정확히는 file descriptor가 1임)로 식별되기도 함
이들 모두 stream 방식으로 데이터를 순차적으로 처리하는게 일반적임.
이 외에도 stderr로 대표되는 "표준에러 출력스트림 (file descriptro가 2)" 도 있으나, 기본적으로 stdout과 동일하게 console로 설정된다.
- 오류 메시지 등이 출력됨.
- Python에선 sys.stderr 이 표준에러출력스트림을 가리킴.
- unbuffered 으로 flush가 자동으로 이루어진다고 생각하면 됨.
- redirection 등을 통해 다른 곳으로 출력되게 설정가능.
2. 미디어 스트리밍에서의 stream
- 실시간 비디오/오디오 전송 및 재생
- 데이터를 작은 chunk로 나누어 전송하며, 사용자에게 실시간으로 재생 가능
- 예시: Netflix, YouTube와 같은 미디어 스트리밍 서비스
주요 특징
- 순차적 처리: 대용량 데이터를 한 번에 처리하지 않음
- 실시간 처리: 실시간 데이터 전송 및 재생에 유리
- 사실 buffer 가 사용되기 때문에 온전한 real time은 아님.
- 입출력 효율성: 파일이나 네트워크를 통해 효율적인 데이터 처리.
같이 보면 좋은 자료들
https://dsaint31.me/mkdocs_site/CE/ch10/ce10_2_04_stdio/#standard-io-library_1
BME
I/O Stream 과 Standard I/O Library 1. Stream 이란? 스트림(stream) 이라는 개념은 데이터의 흐름을 의미하며, 이를 bit(비트) 또는 byte(바이트)의 연속으로 생각할 수 있음. 종종 bit stream 또는 byte stream 이라고
dsaint31.me
https://jcsites.juniata.edu/faculty/rhodes/cs240/fileproc.html
Streams and File I/O
void writeDouble(double v) Converts the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the file as an eight-byte quantity, high byte first. (you are not losing the fractional part of the dou
jcsites.juniata.edu
'CE' 카테고리의 다른 글
| Tree Traversal (트리 순회): BFS and DFS (3) | 2024.12.02 |
|---|---|
| [CE] Heap and Complete Binary Tree (0) | 2024.11.16 |
| [CE] Machine Code와 Microcode의 차이점 비교 및 설명 (0) | 2024.06.05 |
| [CE] Bytecode (바이트코드) (2) | 2024.06.05 |
| [CE] Terms: HDD, Partition, Volume, Drive and File System. (0) | 2024.05.15 |