"Fossies" - the Fresh Open Source Software Archive

Member "Tardis-1.2.1/src/Tardis/ThreadedScheduler.py" (9 Jun 2021, 2634 Bytes) of package /linux/privat/Tardis-1.2.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. For more information about "ThreadedScheduler.py" see the Fossies "Dox" file reference documentation.

    1 # vim: set et sw=4 sts=4 fileencoding=utf-8:
    2 #
    3 # Tardis: A Backup System
    4 # Copyright 2013-2020, Eric Koldinger, All Rights Reserved.
    5 # kolding@washington.edu
    6 #
    7 # Redistribution and use in source and binary forms, with or without
    8 # modification, are permitted provided that the following conditions are met:
    9 #
   10 #     * Redistributions of source code must retain the above copyright
   11 #       notice, this list of conditions and the following disclaimer.
   12 #     * Redistributions in binary form must reproduce the above copyright
   13 #       notice, this list of conditions and the following disclaimer in the
   14 #       documentation and/or other materials provided with the distribution.
   15 #     * Neither the name of the copyright holder nor the
   16 #       names of its contributors may be used to endorse or promote products
   17 #       derived from this software without specific prior written permission.
   18 #
   19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   20 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   21 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   22 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
   23 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   24 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   25 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   26 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   27 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   28 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   29 # POSSIBILITY OF SUCH DAMAGE.
   30 
   31 import sched
   32 import threading
   33 import time
   34 
   35 class ThreadedScheduler(sched.scheduler):
   36     def __init__(self, timefunc=time.monotonic, delayfunc=time.sleep):
   37         super().__init__(timefunc, delayfunc)
   38 
   39     def start(self, name="EventScheduler"):
   40       self.thread = threading.Thread(name=name, target=self.run)
   41       self.thread.setDaemon(True)
   42       self.thread.start()
   43 
   44     def shutdown(self):
   45         while not self.empty():
   46             try:
   47                 self.cancel(queue[0])
   48             except:
   49                 pass
   50 
   51 
   52 if __name__ == "__main__":
   53     def print_time(a='default'):
   54         print("From print_time", time.time(), a)
   55 
   56     x = ThreadedScheduler()
   57     print("Starting")
   58     x.enter(10, 1, print_time, (10,))
   59     x.start()
   60     x.enter(5, 2, print_time, argument=("positional",))
   61     x.enter(5, 1, print_time, (5,))
   62     x.enter(15, 3, print_time, (15,))
   63     x.enter(25, 3, print_time, (25,))
   64     x.enter(30, 3, print_time, (30,))
   65     time.sleep(20)