Python embedding & question about autoconf and dynamic linking
kseehof at neuralintegrator.com
Thu Oct 4 09:13:40 CEST 2001
> Yes, I found that web site last week.
> The reason for us to do embedding rather than extending is that our main
> applciation is written in C (would you write a router in Python?...) and
> use python for writing a re-usable component, that is a CLI component.
> Debugging our application is a lot easier if we embedd the Python code,
> represents a small percentage of our application code size. This is
> we can use the debugger as usual. If we were embedding our router in a
> Python application (a hell of an extension), we would need to debug the
> interpreter, put a breakpoint where it loads extensions, continue until
> it loads our router and then put a breakpoint in our router code.
> Why do I not feel comfortable telling my colleagues who never used Python
> do this?
Well I suppose it depends on how fancy your debugger is. I have no trouble
at all debugging extensions using MSVC++ on windoze. I debug the extension
as a DLL and set the command line to "python myapp.py ...". Setting
breakpoints is just as easy as with an executable and this can even be done
before starting the application, so I don't have to take any of the extra
steps you are talking about, and I certainly don't need to debug the
interpreter. I don't know if you are in windoze or *nix, but I'd assume the
more fancy *nix debuggers can do this too.
Sometimes I have a python debugger and a C++ debugger running at the same
time, and set breakpoints in both! You can even step through python code
and -kablam- your C++ debugger pops up in the extension code. It's really
fun once you get used to it.
Sometimes it does make more sense to embed than extend, but usually
extending makes more sense, because the high level parts of a program (user
interface, architecture, rules, data processing) really should be written in
a high level language. Performance critical code, hardware specific code,
etc. can usually be reduced to a set of low-level functions in C++ (C is
arguably just as good since you usually don't need much object oriented
design at this level).
The only time I have used embedding was on an existing large application
that already had a user interface, to add python as a built in scripting
language. Generally, embedding involves extending since you usually need to
expose your application to the embedded interpreter.
- Ken kseehof at neuralintegrator.com
> On Mon, 1 Oct 2001, Mads Bondo Dydensborg wrote:
> > On Mon, 1 Oct 2001, Olivier Deme wrote:
> > > > I think it is more common to extend Python, than to embed it. I knew
> > > > nothing about Python (apart from the name) a week ago, so I may be
> > > > though.
> > >
> > > Same for me. :-)
> > I just found this page
> > http://www.mcmillan-inc.com/embed.html
> > Hmm.
> > Mads
> > --
> > Mads Bondo Dydensborg.
madsdyd at challenge.dk
> > You know you're a Linux geek when...
> > You can reconstruct your fstab from scratch, and not even think
> > - segfault
More information about the Python-list