CPython and a C extension using Boehm GC

MrJean1 MrJean1 at gmail.com
Tue Dec 25 15:40:38 EST 2007


Correction.  The second line should be ... It is probably worth
trying.

/Jean Brouwers

On Dec 25, 12:19 pm, MrJean1 <MrJe... at gmail.com> wrote:
> Perhaps, you can pre-load the extension library when Python is
> invoked. It is probably trying.
>
> Pre-loading is commonly done done for memory management and profiling
> libraries and it may (or may not) work for libraries including the
> Boehm-GC.  And if it does work, call GC_INIT inside the initialization
> function of the extension library.  The latter will be called just
> before Python's main is.
>
> If you are using the GNU C, writing the initialization function could
> be as simple as
>
>     void __attribute__((constructor))
>     _initializer (void)  /* any name */
>     {
>        call GC_INIT();
>     }
>
> For more details, see <http://gcc.gnu.org/onlinedocs/gcc/Function-
> Attributes.html> under 'constructor'.  Other compilers may support a
> #pragma like init for this purpose.
>
> Pre-loading a (shared) library on Linux is typically done using the
> env command, e.g.:
>
>   $ env  LD_PRELOAD=<path_to_the_library>  python ....
>
> Some command shells support other ways and the name LD_PRELOAD may be
> different on other O/S's.
>
> HTH, /Jean Brouwers
>
> On Dec 25, 3:34 am, malkarouri <malkaro... at gmail.com> wrote:
>
> > Hi everyone,
>
> > 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?
>
> > Best Regards,
>
> > Muhammad Alkarouri




More information about the Python-list mailing list