Skip to content

Commit 034a9cd

Browse files
committed
implement __sizeof__ for SimpleQueue to account for ring-buffer storage
1 parent 9e67b66 commit 034a9cd

File tree

3 files changed

+48
-48
lines changed

3 files changed

+48
-48
lines changed

Lib/test/test_queue.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
# to ensure the Queue locks remain stable.
33
import itertools
44
import random
5+
import struct
56
import threading
67
import time
78
import unittest
89
import weakref
910
from test.support import gc_collect, bigmemtest
1011
from test.support import import_helper
1112
from test.support import threading_helper
12-
import sys
1313
from test import support
1414

1515
# queue module depends on threading primitives

Modules/_queuemodule.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -239,22 +239,6 @@ simplequeue_traverse(PyObject *op, visitproc visit, void *arg)
239239
return 0;
240240
}
241241

242-
/*[clinic input]
243-
@critical_section
244-
_queue.SimpleQueue.__sizeof__ -> Py_ssize_t
245-
246-
Returns size in memory, in bytes.
247-
[clinic start generated code]*/
248-
249-
static Py_ssize_t
250-
_queue_SimpleQueue___sizeof___impl(simplequeueobject *self)
251-
/*[clinic end generated code: output=58ce4e3bbc078fd4 input=a3a7f05c9616598f]*/
252-
{
253-
Py_ssize_t res = sizeof(simplequeueobject);
254-
res += self->buf.items_cap * sizeof(PyObject *);
255-
return res;
256-
}
257-
258242
/*[clinic input]
259243
@classmethod
260244
_queue.SimpleQueue.__new__ as simplequeue_new
@@ -516,6 +500,22 @@ _queue_SimpleQueue_qsize_impl(simplequeueobject *self)
516500
return RingBuf_Len(&self->buf);
517501
}
518502

503+
/*[clinic input]
504+
@critical_section
505+
_queue.SimpleQueue.__sizeof__ -> Py_ssize_t
506+
507+
Returns size in memory, in bytes.
508+
[clinic start generated code]*/
509+
510+
static Py_ssize_t
511+
_queue_SimpleQueue___sizeof___impl(simplequeueobject *self)
512+
/*[clinic end generated code: output=58ce4e3bbc078fd4 input=a3a7f05c9616598f]*/
513+
{
514+
Py_ssize_t res = sizeof(simplequeueobject);
515+
res += self->buf.items_cap * sizeof(PyObject *);
516+
return res;
517+
}
518+
519519
static int
520520
queue_traverse(PyObject *m, visitproc visit, void *arg)
521521
{

Modules/clinic/_queuemodule.c.h

Lines changed: 31 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)