Keyword: flush
flush는 버퍼에 있는 모든 데이터를 출력 대상으로 보내는 기능을 수행하는 키워드입니다.
파이썬에서 출력 작업은 기본적으로 버퍼링되어 출력 대상으로 보내지기 전에 일정량의 데이터가 모일 때까지 대기하는데, 이 때 flush를 사용하면 버퍼에 있는 모든 데이터를 즉시 출력 대상으로 전송할 수 있습니다. 즉, flush가 호출되면 출력 대상으로 즉시 내용이 전송되어 버퍼를 비울 수 있습니다.
flush는 특히 중요한 작업이나 로그 기록 시 사용됩니다. 예를 들어, 프로그램에서 오류가 발생하여 중단되는 경우에는 중단 이전에 버퍼에 있는 모든 로그를 출력 대상으로 내보내기 위해 flush를 사용할 수 있습니다.
아래는 flush를 사용하는 간단한 예제 코드입니다.
```python
import time
def generate_data():
# 데이터를 생성하는 함수로 가정
return "Generated data"
def save_data(data):
# 데이터를 저장하는 함수로 가정
print(f"Saving data: {data}")
time.sleep(1) # 시간이 오래 걸리는 작업을 가정
print("Data saved!")
data = generate_data() # 데이터 생성
save_data(data) # 데이터 저장
print("Program finished!")
```
위 예제에서는 `save_data` 함수에 `print` 함수가 있어 데이터를 저장하기 위한 메시지가 출력됩니다. 하지만 실제로는 이 메시지들은 버퍼에 저장되어 출력 대상에 전송되기 전까지 대기하게 됩니다. 그래서 "Program finished!" 메시지가 먼저 출력되고, 그 이후에 "Saving data: Generated data"와 "Data saved!" 메시지가 출력됩니다.
이때 `save_data` 함수에서 `print` 함수 호출 전에 `flush`를 사용하면 버퍼에 있는 내용을 즉시 출력 대상으로 전송할 수 있습니다. 아래는 수정된 코드입니다.
```python
import time
def generate_data():
# 데이터를 생성하는 함수로 가정
return "Generated data"
def save_data(data):
# 데이터를 저장하는 함수로 가정
print(f"Saving data: {data}", flush=True) # flush=True 옵션 사용
time.sleep(1) # 시간이 오래 걸리는 작업을 가정
print("Data saved!", flush=True) # flush=True 옵션 사용
data = generate_data() # 데이터 생성
save_data(data) # 데이터 저장
print("Program finished!")
```
이제 `print` 함수 호출 시에 `flush=True` 옵션을 추가하여 버퍼에 있는 내용을 즉시 전송합니다. 따라서 "Saving data: Generated data"와 "Data saved!" 메시지는 "Program finished!" 메시지보다 먼저 출력됩니다.
더 자세한 내용은 파이썬 공식 문서를 참고하세요: [파이썬 공식 문서 - print 함수](https://docs.python.org/ko/3/library/functions.html#print)
댓글