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