On Fri, 4 Mar 2011, Bill Janssen wrote:

Andi Vajda <va...@apache.org> wrote:

Or if I need to run the same Python program multiple times?

There is no notion of python program in this context (no
__main__). You import a module, instantiate a class from it and invoke
its methods. You can import and instantiate as many classes and
modules as you like, of course.

JEPP has an interface to Python's "exec".  This avoids the overhead of
writing a Java class which is then subclassed in Python which is then
instantiated and brought out to Java again so that you can call one of
its methods.  That would be a handy thing to have in PythonVM.  I
suppose I could add it, after I get PythonVM working (this loadLibrary
thing).

Alternatively, I could use JEPP, or JEPP tweaked for JCC, if there was
some way to pass the Java VM "into" the JEPP instantiation of Python, in
such a way that that initVM() could find it.

If JEPP execs python, then that Python VM runs in a subprocess of the Java process. If you then call JCC's initVM() from that subprocess, I do not know how the JNI api would behave in that situation. Will it "find" the parent process' JVM, I don't know. I doubt that JNI has all the magic required for transparent IPC to the parent process built-in out of the box.

This is somewhat similar in setup to what Roman is doing, using Python's subprocessing module insteaf. I had done that too, originally, but gave up because of inextricable deadlocks.

Andi..

Reply via email to