-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
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) 시간 복잡도로 삽입 및 삭제 가능하지만, 멀티스레딩 환경에서는 성능이 저하
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels