Message391693
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 |
|
Date |
User |
Action |
Args |
2021-04-23 12:36:20 | multiks2200 | set | recipients:
+ multiks2200, rhettinger |
2021-04-23 12:36:19 | multiks2200 | set | messageid: <1619181379.99.0.551572207368.issue43911@roundup.psfhosted.org> |
2021-04-23 12:36:19 | multiks2200 | link | issue43911 messages |
2021-04-23 12:36:19 | multiks2200 | create | |
|