realtime design
Bjorn Pettersen
BPettersen at NAREX.com
Mon Oct 14 20:20:36 EDT 2002
> From: Aahz [mailto:aahz at pythoncraft.com]
>
> In article <cb035744.0210140629.43767d40 at posting.google.com>,
> Will Stuyvesant <hwlgw at hotmail.com> wrote:
> >
> >I am trying to come up with a method to run a function in such a way
> >that the whole thing will take at most x milliseconds, with x a
> >reasonable value like 200. If the function is not finished by that
> >time, a default value should be used. If the function *does* finish
in
> >time, the return value of the function should be used.
>
> That last part isn't really possible, not if there are
> statements that depend on external connectivity like I/O.
> But it's certainly possible to make your main loop work the
> way you want: have your function put its result on a
> Queue.Queue. In your main function, time.sleep() for however
> long it's supposed to, then do a non-blocking get() on the
> queue. If the get() fails, do whatever's appropriate. This
> gets trickier if your main program needs to be responsive
> during the 200ms, but it's not impossible.
You should be able to re-work the "Futures" receipe
(http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/84317) into
doing what you want... (basically set a timestamp in __init__ and
conditionally return a default value in __call__).
-- bjorn
More information about the Python-list
mailing list