Skip to content

Queue #12

@Sam1000won

Description

@Sam1000won

1. queue (Queue)

import collections import queue

특징:

  • queue.Queue, queue.LifoQueue, queue.PriorityQueue와 같은 다양한 종류의 큐가 있음
  • queue.Queue는 스레드 안전(thread-safe)하여 멀티스레딩 환경에서 안전하게 사용

장점:

  • 멀티스레딩 환경에서 안전하게 사용
  • 큐의 기본 동작(삽입, 삭제)에 대해 명확한 API를 제공
  • 특정 큐 타입(예: 우선순위 큐 등)에 대해 특화된 기능을 제공

단점:

  • 일반적으로 deque보다 성능이 낮을 수 있습니다. 특히, 큐의 앞쪽에서 요소를 제거할 때 성능이 떨어질 수 있음
  • queue.Queue는 단일 방향(앞에서만 제거, 뒤에서만 추가)으로 작동하므로, 양쪽 끝에서의 삽입과 삭제를 지원하지 않음

#2. deque (Double-Ended Queue)

  • 정의: deque는 양쪽 끝에서 요소를 추가하고 제거할 수 있는 자료구조입니다. Python의 collections 모듈에서 제공
from collections import deque

특징:

  • O(1) 시간 복잡도로 양쪽 끝에서 삽입 및 삭제가 가능.
  • 리스트와 유사하지만, 리스트의 경우 앞쪽에서 요소를 제거할 때 O(n).
  • 일반적으로 FIFO(First-In-First-Out) 또는 LIFO(Last-In-First-Out) 방식으로 사용.

장점:

  • 양쪽 끝에서의 삽입 및 삭제가 효율적.
  • 큐와 스택 모두의 기능을 제공하므로, 다양한 용도로 사용할 수 있음.
  • 메모리 사용이 효율적이며, 대량의 데이터 처리에 적합.

단점:

  • deque는 리스트보다 약간 더 많은 메모리를 사용할 수 있음.
  • 특정 상황에서는 데이터 접근 속도가 느릴 수 있음

요약

용도:

  • deque: 양쪽 끝에서의 삽입과 삭제가 필요한 경우에 적합합니다. 일반적인 큐 및 스택 기능을 모두 제공하므로, 다양한 용도로 활용
  • queue: 멀티스레딩 환경에서 안전하게 사용할 수 있는 큐가 필요할 때 적합합니다. FIFO 방식의 큐를 사용하고자 할 때 유용.

#성능:

  • deque: O(1) 시간 복잡도로 양쪽 끝에서 삽입 및 삭제 가능.
  • queue: 일반적으로 O(1) 시간 복잡도로 삽입 및 삭제 가능하지만, 멀티스레딩 환경에서는 성능이 저하

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions