[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
- Previous message: [Python-Dev] PEP 371 Discussion (pyProcessing Module)
- Next message: [Python-Dev] C API for gc.enable() and gc.disable()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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)
- Previous message: [Python-Dev] PEP 371 Discussion (pyProcessing Module)
- Next message: [Python-Dev] C API for gc.enable() and gc.disable()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]