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 데이터를 더 효율적으로 처리할 수 있습니다.

댓글

이 블로그의 인기 게시물

js 스트링에서 요소 갯수 세기

STUDY

javascript cheatsheet