[Python-Dev] PyGC_Collect ignores state of `enabled`
Neil Schemenauer
nas at arctrix.com
Wed May 18 14:52:40 EDT 2016
More information about the Python-Dev mailing list
Wed May 18 14:52:40 EDT 2016
- Previous message (by thread): [Python-Dev] PyGC_Collect ignores state of `enabled`
- Next message (by thread): [Python-Dev] PyGC_Collect ignores state of `enabled`
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Benjamin Peterson <benjamin at python.org> wrote: > Adding PyGC_CollectIfEnabled() and calling it in Py_Finalize is probably > fine. I don't think the contract of PyGC_Collect itself (or gc.collect() > for that matter) should be changed. You might want to disable GC but > invoke it yourself. Yes, that sounds okay to me. I poked around at the calls to PyGC_Collect() and _PyGC_CollectNoFail(). The cyclic garbage collector gets invoked at least three times during shutdown. Once by Py_FinalizeEx() and two times by PyImport_Cleanup(). That seems a bit exessively expensive to me. The collection time can be significant for programs with a lot of "container" objects in memory. The whole finalize/shutdown logic of the CPython interpreter could badly use some improvement. Currently it is a set of ugly hacks piled on top of each other. Now that we have PEP 3121, Extension Module Initialization and Finalization https://www.python.org/dev/peps/pep-3121/ we should be able to cleanup this mess. PyImport_Cleanup() is the main area of trouble. I don't think we should not be clearing sys.modules and we should certainly not be clearing module dicts. If there is some whippersnapper out there who wants to get their hands dirty with Python internals, fixing PyImport_Cleanup() would be a juicy project. Neil
- Previous message (by thread): [Python-Dev] PyGC_Collect ignores state of `enabled`
- Next message (by thread): [Python-Dev] PyGC_Collect ignores state of `enabled`
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list