Json파일을 반복해서 열고 쓰고 저장하고 하니까 파일이 커질 수록 오래걸림.
주기적으로 저장하는 방식으로 조금 해결
파이썬에서 JSON 데이터를 다룰 때, 매번 파일에 쓰는 방식이 비효율적일 수 있습니다. 파일이 커질수록 시간이 많이 걸리기 때문입니다. 몇 가지 최적화 방법을 제안할 수 있습니다:
1. **덮어쓰기 대신 추가 모드 사용**:
- JSON 파일을 매번 읽고 쓰는 대신, 처음부터 한 번 읽고, 메모리에서 데이터를 추가한 후, 한 번에 파일에 저장하는 방법을 고려해보세요. 추가 모드로 데이터를 쓰는 것은 JSON 파일 구조상 어렵기 때문에 일반적으로는 한 번에 쓰는 것이 좋습니다.
2. **데이터를 주기적으로 저장**:
- 데이터가 일정량 누적되면 파일에 저장하는 방법을 사용할 수 있습니다. 이렇게 하면 매번 파일에 접근하지 않아서 성능을 향상시킬 수 있습니다.
3. **JSON 대신 다른 형식 사용**:
- JSON 대신 데이터베이스를 사용하는 방법도 고려할 수 있습니다. SQLite 같은 경량 데이터베이스는 작은 어플리케이션에 적합합니다. 또는 NoSQL 데이터베이스인 MongoDB도 JSON 형식의 데이터를 효율적으로 처리할 수 있습니다.
다음은 첫 번째 방법을 예시로 보여주는 코드입니다:
```python
import json
# JSON 파일 읽기
def read_json_file(file_path):
try:
with open(file_path, 'r') as file:
data = json.load(file)
except FileNotFoundError:
data = []
return data
# JSON 파일 쓰기
def write_json_file(file_path, data):
with open(file_path, 'w') as file:
json.dump(data, file, indent=4)
# 데이터 추가
def add_data(file_path, new_data):
data = read_json_file(file_path)
data.append(new_data)
write_json_file(file_path, data)
# 사용 예제
file_path = 'data.json'
new_data = {"name": "Alice", "age": 30}
add_data(file_path, new_data)
```
이 코드는 JSON 파일을 읽고, 메모리에서 데이터를 추가한 후, 파일에 저장하는 방식입니다. 이렇게 하면 매번 파일을 열고 쓰는 작업을 줄일 수 있습니다.
또한, 주기적으로 데이터를 파일에 저장하려면 아래와 같은 접근 방식을 사용할 수 있습니다:
```python
import json
import time
data_buffer = []
# 데이터 추가 (버퍼에 저장)
def add_data_to_buffer(new_data):
data_buffer.append(new_data)
if len(data_buffer) >= 10: # 버퍼가 일정 크기에 도달하면 파일에 저장
flush_buffer_to_file('data.json')
# 버퍼의 데이터를 파일에 저장
def flush_buffer_to_file(file_path):
global data_buffer
current_data = read_json_file(file_path)
current_data.extend(data_buffer)
write_json_file(file_path, current_data)
data_buffer = []
# JSON 파일 읽기 및 쓰기 함수는 위와 동일
# 주기적으로 버퍼 비우기 (예: 60초마다)
while True:
time.sleep(60)
flush_buffer_to_file('data.json')
```
이 코드는 데이터를 주기적으로 파일에 저장하는 예제입니다. 특정 시간 간격마다 버퍼에 있는 데이터를 파일에 저장하는 방식으로 성능을 향상시킬 수 있습니다.
이 방법들을 통해 JSON 데이터를 더 효율적으로 처리할 수 있습니다.
댓글
댓글 쓰기