[Python-Dev] C API for gc.enable() and gc.disable() (original) (raw)

Alexandre Vassalotti alexandre at peadrop.com
Sun Jun 1 06:11:19 CEST 2008


Would anyone mind if I did add a public C API for gc.disable() and gc.enable()? I would like to use it as an optimization for the pickle module (I found out that I get a good 2x speedup just by disabling the GC while loading large pickles). Of course, I could simply import the gc module and call the functions there, but that seems overkill to me. I included the patch below for review.

-- Alexandre

Index: Include/objimpl.h

--- Include/objimpl.h (revision 63766) +++ Include/objimpl.h (working copy) @@ -221,8 +221,10 @@

-/* C equivalent of gc.collect(). / +/ C equivalent of gc.collect(), gc.enable() and gc.disable(). */ PyAPI_FUNC(Py_ssize_t) PyGC_Collect(void); +PyAPI_FUNC(void) PyGC_Enable(void); +PyAPI_FUNC(void) PyGC_Disable(void);

/* Test if a type has a GC head */ #define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC) Index: Modules/gcmodule.c

--- Modules/gcmodule.c (revision 63766) +++ Modules/gcmodule.c (working copy) @@ -1252,6 +1252,18 @@ return n; }

+void +PyGC_Disable(void) +{

+} + +void +PyGC_Enable(void) +{

+} + /* for debugging */ void _PyGC_Dump(PyGC_Head *g)



More information about the Python-Dev mailing list