프로토타입을 활용한 프로듀서-컨슈머 패턴 구현

파이썬을 예로 들어 프로듀서-컨슈머 패턴을 구현해보겠습니다. 먼저, queue 모듈을 사용하여 프로듀서와 컨슈머 간의 데이터 전달을 관리할 수 있는 큐를 생성합니다. 아래는 간단한 예시 코드입니다.

import queue
import threading

# 공유 큐 생성
shared_queue = queue.Queue()

# 프로듀서 함수
def producer():
    # 데이터 생성
    data = ['data1', 'data2', 'data3']

    # 데이터를 큐에 추가
    for item in data:
        shared_queue.put(item)

    # 작업 완료를 알리기 위해 None을 큐에 추가
    shared_queue.put(None)

# 컨슈머 함수
def consumer():
    while True:
        # 큐에서 데이터를 가져옴
        item = shared_queue.get()

        # 작업이 완료되었을 경우 반복문 종료
        if item is None:
            break
        
        # 데이터 처리
        print(f'Consumed: {item}')

# 프로듀서 스레드 생성
producer_thread = threading.Thread(target=producer)

# 컨슈머 스레드 생성
consumer_thread = threading.Thread(target=consumer)

# 스레드 실행
producer_thread.start()
consumer_thread.start()

# 작업이 모두 완료될 때까지 대기
producer_thread.join()
consumer_thread.join()

위 코드에서 producer 함수는 데이터를 생성하여 큐에 추가하는 역할을 합니다. consumer 함수는 큐에서 데이터를 가져와서 처리하는 역할을 합니다. 프로듀서 스레드와 컨슈머 스레드는 병렬로 실행되며, 작업이 모두 완료될 때까지 대기합니다.

프로토타입을 활용한 프로듀서-컨슈머 패턴을 구현하면 병렬 처리 환경에서 데이터를 효율적으로 처리할 수 있습니다. 이를 통해 시스템의 성능을 향상시킬 수 있습니다.

자세한 내용은 아래의 참고 자료를 확인하시기 바랍니다.

#패턴 #프로토타입