[Python-Dev] RFC: PEP 445: Add new APIs to customize Python memory allocators
Antoine Pitrou
solipsis at pitrou.net
Wed Jun 19 16:15:58 CEST 2013
Le Tue, 18 Jun 2013 22:40:49 +0200,
Victor Stinner <victor.stinner at gmail.com> a écrit :
>
> Other changes
> -------------
>
[...]
>
> * Configure external libraries like zlib or OpenSSL to allocate memory
> using ``PyMem_RawMalloc()``
Why so, and is it done by default?
> Only one get/set function for block allocators
> ----------------------------------------------
>
> Replace the 6 functions:
>
> * ``void PyMem_GetRawAllocator(PyMemBlockAllocator *allocator)``
> * ``void PyMem_GetAllocator(PyMemBlockAllocator *allocator)``
> * ``void PyObject_GetAllocator(PyMemBlockAllocator *allocator)``
> * ``void PyMem_SetRawAllocator(PyMemBlockAllocator *allocator)``
> * ``void PyMem_SetAllocator(PyMemBlockAllocator *allocator)``
> * ``void PyObject_SetAllocator(PyMemBlockAllocator *allocator)``
>
> with 2 functions with an additional *domain* argument:
>
> * ``int PyMem_GetBlockAllocator(int domain, PyMemBlockAllocator
> *allocator)``
> * ``int PyMem_SetBlockAllocator(int domain, PyMemBlockAllocator
> *allocator)``
I would much prefer this solution.
> Drawback: the caller has to check if the result is 0, or handle the
> error.
Or you can just call Py_FatalError() if the domain is invalid.
> If an hook is used to the track memory usage, the ``malloc()`` memory
> will not be seen. Remaining ``malloc()`` may allocate a lot of memory
> and so would be missed in reports.
A lot of memory? In main()?
Regards
Antoine.
More information about the Python-Dev
mailing list