Embedding: Is it possible to limit number of virtual instructions executed?

2008-10-31 Thread juliangrendell
Hi experts-

I have a potential use case of embedding Python where it must co-
operate with the host c/c++ application in a single thread.  That is,
the c code and python interpreter need to cooperate and time share, or
yield to each other.

The main loop would need to do something like:

check for events
for events with c handlers:
process in c
for events with python handlers:
add to queue
if have time:
python_continue_execution(number of vm instructions)

The goal is to be able to set some limit on the amount of time in the
interpreter in each loop, and not rely on the python side code.  (I
realise this will not be absolute, especially if the python code calls
c extensions, but it will be more straight forward for the users.)

Does anyone have any suggestions for how this could be achieved?

Thanks in advance,

Julian
--
http://mail.python.org/mailman/listinfo/python-list


Re: Embedding: Is it possible to limit number of virtual instructions executed?

2008-11-03 Thread juliangrendell
Thanks to those who replied; it seems that it is possible to do,
but would require some changes to the python core, and may not be
as fine-grained as I'd presumed.  I think I'll consider running
python in a seperate thread and create a couple of message queues
to/from that thread and the main thread.

Julian

On Nov 1, 12:46 am, Paul Rubin  wrote:
> [EMAIL PROTECTED] writes:
> > The goal is to be able to set some limit on the amount of time in the
> > interpreter in each loop, and not rely on the python side code. ...
> > Does anyone have any suggestions for how this could be achieved?
>
> Not really.  Limiting the number of virtual instructions (byte codes)
> is of no help, since each one can consume unlimited runtime.  I think
> for example that bigint exponentiation is one bytecode, and 9**99
> probably takes several seconds to compute.

--
http://mail.python.org/mailman/listinfo/python-list