This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author multiks2200
Recipients multiks2200, rhettinger
Date 2021-04-23.12:36:19
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1619181379.99.0.551572207368.issue43911@roundup.psfhosted.org>
In-reply-to
Content
So this got me thinking of trying to use some other linked list implementations. 

I've used a llist library - https://github.com/ajakubek/python-llist

Using their doubly linked list implementation:

    class DllistQueue(queue.Queue):
        def _init(self, maxsize):
            self.queue = dllist()

Results are:
>del_after_puts False del_after_gets True n_puts 20000000
>before run
>mem_pct 0.15% 
>------ put done  ----- qsize 20000000
>mem_pct 55.34% 
>------ gets done  ----- qsize 0
>mem_pct 0.15% 
>deleting queue after gets <__main__.DllistQueue object at 0x7f494ba91450>
>mem_pct 0.15% 
>time elapsed 0:02:17.642700

Using their singly listed list implementation:

    class SllistQueue(queue.Queue):
        def _init(self, maxsize):
            self.queue = sllist()

results are:
>del_after_puts False del_after_gets True n_puts 20000000
>before run
>mem_pct 0.15% 
>puting  0 qsize 0
>------ put done  ----- qsize 20000000
>mem_pct 55.34% 
>------ gets done  ----- qsize 0
>mem_pct 0.15% 
>deleting queue after gets <__main__.SllistQueue object at 0x7ff07bf484d0>
>mem_pct 0.15% 
>time elapsed 0:02:03.495047

I have not dived in how their C implementations differ from deque, but it seems to use more memory and it's slower, but it does not seem to leak at all. 

Thanks
History
Date User Action Args
2021-04-23 12:36:20multiks2200setrecipients: + multiks2200, rhettinger
2021-04-23 12:36:19multiks2200setmessageid: <1619181379.99.0.551572207368.issue43911@roundup.psfhosted.org>
2021-04-23 12:36:19multiks2200linkissue43911 messages
2021-04-23 12:36:19multiks2200create