CPython and a C extension using Boehm GC
Andrew MacIntyre
andymac at bullseye.apana.org.au
Tue Dec 25 22:35:23 EST 2007
malkarouri wrote:
> Is it possible to write a Python extension that uses the Boehm garbage
> collector?
> I have a C library written that makes use of boehm-gc for memory
> management. To use that, I have to call GC_INIT() at the start of the
> program that uses the library. Now I want to encapsulate the library
> as a CPython extension. The question is really is that possible? And
> will there be conflicts between the boehm-gc and Python memory
> management? And when should I call GC_INIT?
It probably should be possible with some caveats:
- memory allocated by Python is never passed into the library such that
it also ends up being subject to boehm-gc;
- memory allocated by the library is never used by Python objects.
So memcpy()ing between library allocated and Python allocated memory
would seem to be a way to achieve this.
I would call GC_INIT in the extension's import routine
(init<module_name>()) for a C extension, and immediately after loading
the library if using ctypes.
--
-------------------------------------------------------------------------
Andrew I MacIntyre "These thoughts are mine alone..."
E-mail: andymac at bullseye.apana.org.au (pref) | Snail: PO Box 370
andymac at pcug.org.au (alt) | Belconnen ACT 2616
Web: http://www.andymac.org/ | Australia
More information about the Python-list
mailing list