Skip to content

Commit 430cfab

Browse files
timothy-shieldsdbrattli
authored andcommitted
Use deque in ReplaySubject (#646)
1 parent 54eaa94 commit 430cfab

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

reactivex/subject/replaysubject.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sys
2+
from collections import deque
23
from datetime import datetime, timedelta
3-
from typing import Any, List, NamedTuple, Optional, TypeVar, cast
4+
from typing import Any, Deque, NamedTuple, Optional, TypeVar, cast
45

56
from reactivex.observer.scheduledobserver import ScheduledObserver
67
from reactivex.scheduler import CurrentThreadScheduler
@@ -56,7 +57,7 @@ def __init__(
5657
self.window = (
5758
timedelta.max if window is None else self.scheduler.to_timedelta(window)
5859
)
59-
self.queue: List[QueueItem] = []
60+
self.queue: Deque[QueueItem] = deque()
6061

6162
def _subscribe_core(
6263
self,
@@ -84,10 +85,10 @@ def _subscribe_core(
8485

8586
def _trim(self, now: datetime) -> None:
8687
while len(self.queue) > self.buffer_size:
87-
self.queue.pop(0)
88+
self.queue.popleft()
8889

8990
while self.queue and (now - self.queue[0].interval) > self.window:
90-
self.queue.pop(0)
91+
self.queue.popleft()
9192

9293
def _on_next_core(self, value: _T) -> None:
9394
"""Notifies all subscribed observers with the value."""

0 commit comments

Comments
 (0)