From 0035d403ec4b62e24290eebf25df4ef710de112e Mon Sep 17 00:00:00 2001 From: uvok Date: Fri, 18 Apr 2025 19:13:41 +0200 Subject: Sort on insert --- trade_queue.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/trade_queue.py b/trade_queue.py index 5e7fb41..6e8c2c5 100644 --- a/trade_queue.py +++ b/trade_queue.py @@ -1,4 +1,5 @@ import logging +import bisect from collections import deque from copy import deepcopy from decimal import Decimal @@ -32,7 +33,7 @@ class FIFOQueue: Get amount of trades in the queue. """ return len(self.__queue) - + def __repr__(self) -> str: """ Get string representation of queue (for debugging). @@ -50,7 +51,11 @@ class FIFOQueue: Add a trade to the queue by specifying properties. """ trade = Trade(amount, total_cost, date) - self.__queue.append(trade) + bisect.insort( + self.__queue, + trade, + key=lambda t: t.date + ) self._cache_valid = False logger.info(f"Added trade: {trade}.") @@ -58,7 +63,11 @@ class FIFOQueue: """ Add a trade to the queue. """ - self.__queue.append(trade) + bisect.insort( + self.__queue, + trade, + key=lambda t: t.date + ) self._cache_valid = False logger.info(f"Added trade: {trade}.") -- cgit v1.2.3