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) +{ + enabled = 0; +} + +void +PyGC_Enable(void) +{ + enabled = 1; +} + /* for debugging */ void _PyGC_Dump(PyGC_Head *g) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com