Embedding Python question.

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Tue May 20 19:13:49 EDT 2008


En Tue, 20 May 2008 06:35:23 -0300, Thomas Troeger  
<thomas.troeger.ext at siemens.com> escribió:

> I've successfully embedded the Python interpreter into a set of C/C++  
> application programs that use a larger library project with information  
> from http://docs.python.org/api/api.html and  
> http://docs.python.org/ext/ext.html. Now I want to wrap classes and  
> functions from the associated libraries so that I can write new  
> applications completely in Python, but I'm not entirely sure how to  
> start because I have some problems understanding which is the best way.  
> It would be nice if someone could answer the following questions and  
> clarify this matter:
>
> - until now I've used the approach as documented in  
> http://docs.python.org/ext/extending-with-embedding.html to extend the  
> embedded interpreter and that works pretty well. I'd like to use a  
> similar approach for other C applications. Can I write a C library that  
> implements this technique and link it into all C applications that need  
> Python support, or is there a better, more elegant way?

(I don't get what you mean by "this technique" and how would you write a  
library)

> - in the documentation, there's an example that illustrates the creation  
> of a python module for pure extending of a python script (the Noddy  
> stuff). Do I have to make a separate module for each library I want to  
> wrap? If yes, how can I manage the case where two libraries can access  
> each other?

Normally, yes, you'd write a wrapping module for each library. If both  
access each other - well, you'd manage it the same way as you would do it  
in C; you're just providing an interfase for calling the functions from  
Python. (Hmm, maybe I have an "imagination crisis" today?)

> - if I write an extension module, how can I handle the case where the C  
> wrapper methods want to call back into the same Python interpreter  
> instance?

I think there is no problem - unless your program is multithreaded, then  
you should not release the GIL when calling into your extension if there  
is a chance the C code may call Python code.


-- 
Gabriel Genellina




More information about the Python-list mailing list