cinap_lenrekadd hg and python4bb9e2215 years agoHistory
97 lines · 3.4 KB · TeX
RawDownload
\section{\module{sched} ---         Event scheduler} % LaTeXed and enhanced from comments in file \declaremodule{standard}{sched}\sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il}\modulesynopsis{General purpose event scheduler.} The \module{sched} module defines a class which implements a generalpurpose event scheduler:\index{event scheduling} \begin{classdesc}{scheduler}{timefunc, delayfunc}The \class{scheduler} class defines a generic interface to schedulingevents. It needs two functions to actually deal with the ``outside world''--- \var{timefunc} should be callable without arguments, and return a number (the ``time'', in any units whatsoever).  The \var{delayfunc}function should be callable with one argument, compatible with the outputof \var{timefunc}, and should delay that many time units.\var{delayfunc} will also be called with the argument \code{0} aftereach event is run to allow other threads an opportunity to run inmulti-threaded applications.\end{classdesc} Example: \begin{verbatim}>>> import sched, time>>> s=sched.scheduler(time.time, time.sleep)>>> def print_time(): print "From print_time", time.time()...>>> def print_some_times():...     print time.time()...     s.enter(5, 1, print_time, ())...     s.enter(10, 1, print_time, ())...     s.run()...     print time.time()...>>> print_some_times()930343690.257From print_time 930343695.274From print_time 930343700.273930343700.276\end{verbatim}  \subsection{Scheduler Objects \label{scheduler-objects}} \class{scheduler} instances have the following methods: \begin{methoddesc}{enterabs}{time, priority, action, argument}Schedule a new event. The \var{time} argument should be a numeric typecompatible with the return value of the \var{timefunc} function passed to the constructor. Events scheduled forthe same \var{time} will be executed in the order of their\var{priority}. Executing the event means executing\code{\var{action}(*\var{argument})}.  \var{argument} must be asequence holding the parameters for \var{action}. Return value is an event which may be used for later cancellation ofthe event (see \method{cancel()}).\end{methoddesc} \begin{methoddesc}{enter}{delay, priority, action, argument}Schedule an event for \var{delay} more time units. Other then therelative time, the other arguments, the effect and the return valueare the same as those for \method{enterabs()}.\end{methoddesc} \begin{methoddesc}{cancel}{event}Remove the event from the queue. If \var{event} is not an eventcurrently in the queue, this method will raise a\exception{RuntimeError}.\end{methoddesc} \begin{methoddesc}{empty}{}Return true if the event queue is empty.\end{methoddesc} \begin{methoddesc}{run}{}Run all scheduled events. This function will wait (using the \function{delayfunc} function passed to the constructor)for the next event, then execute it and so on until there are no morescheduled events. Either \var{action} or \var{delayfunc} can raise an exception.  Ineither case, the scheduler will maintain a consistent state andpropagate the exception.  If an exception is raised by \var{action},the event will not be attempted in future calls to \method{run()}. If a sequence of events takes longer to run than the time availablebefore the next event, the scheduler will simply fall behind.  Noevents will be dropped; the calling code is responsible for canceling events which are no longer pertinent.\end{methoddesc}