Sched module in Python

Sched module is the standard library, can be used in the creation of bots and other monitoring and automation applications. The sched module implements a generic event scheduler for running tasks at specific times. It provides similar tools like task scheduler in windows or Linux, but the main advantage is with Python’s own sched module platform differences can be ignored.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program for Creating 
# an event scheduler
  
  
import sched
import time
  
  
# Creating an instance of the
# scheduler class
scheduler = sched.scheduler(time.time, 
                            time.sleep)

chevron_right


Basic methods available with scheduler instances

  • scheduler.enter(): Events can be scheduled to run after a delay, or at a specific time. To schedule them with a delay, enter() method is used.

    Syntax: scheduler.enter(delay, priority, action, argument=(), kwargs={})



    Parameters:
    delay: A number representing the delay time
    priority: Priority value
    action: Calling function
    argument: A tuple of arguments

    Example:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    import sched
    import time
      
    # instance is created
    scheduler = sched.scheduler(time.time,
                                time.sleep)
      
    # function to print time 
    # and name of the event
    def print_event(name):
        print('EVENT:', time.time(), name)
      
    # printing starting time
    print ('START:', time.time())
      
    # first event with delay of
    # 1 second
    e1 = scheduler.enter(1, 1
                         print_event, ('1 st', ))
      
    # second event with delay of
    # 2 seconds
    e1 = scheduler.enter(2, 1
                         print_event, (' 2nd', ))
      
    # executing the events
    scheduler.run()

    chevron_right

    
    

    Output :

    START: 1580389814.152131
    EVENT: 1580389815.1548214 1 st
    EVENT: 1580389816.1533117  2nd
    
  • scheduler.enterabs() The enterabs() time adds an event to the internal queue of the scheduler, as the run() method of a scheduler is called, the entries in the queue of a scheduler are executed one by one.

    Syntax: scheduler.enterabs(time, priority, action, argument=(), kwargs={})

    Parameters:
    time: Time at which the event/action has to be executed
    priority: The priority of the event
    action: The function that constitutes an event
    argument: Positional arguments to the event function
    kwargs: A dictionary of keyword arguments to the event function

    Example:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # library imported
    import sched
    import time
      
    # instance is created
    scheduler = sched.scheduler(time.time,
                                time.sleep)
      
    # function to print time and
    # name of the event
    def print_event(name):
        print('EVENT:', time.time(), name)
      
    # printing starting time
    print ('START:', time.time())
      
    # event x with delay of 1 second
    # enters queue using enterabs method
    e_x = scheduler.enterabs(time.time()+1, 1,
                             print_event, 
                             argument = ("Event X", ));
      
    # executing the events
    scheduler.run()

    chevron_right

    
    

    Output :

    START: 1580389960.5845037
    EVENT: 1580389961.5875661 Event X
    
  • scheduler.cancel() Remove the event from the queue. If the event is not an event currently in the queue, this method will raise a ValueError.

    Syntax: scheduler.cancel(event)

    Parameter:
    event: The event that should be removed.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    import sched
    import time
      
      
    # instance is created
    scheduler = sched.scheduler(time.time,
                                time.sleep)
      
    # function to print time and
    # name of the event
    def print_event(name):
        print('EVENT:', time.time(), name)
      
    # printing starting time
    print ('START:', time.time())
      
    # first event with delay 
    # of 1 second
    e1 = scheduler.enter(1, 1
                         print_event,
                         ('1 st', ))
      
      
    # second event with delay 
    # of 2 seconds
    e2 = scheduler.enter(2, 1
                         print_event,
                         (' 2nd', ))
      
    # removing 1st event from 
    # the event queue
    scheduler.cancel(e1)
      
    # executing the events
    scheduler.run()

    chevron_right

    
    

    Output :

    START: 1580390119.54074
    EVENT: 1580390121.5439944  2nd
    
  • scheduler.empty() It return True if the event queue is empty. It takes no argument.

    Example:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    import sched
    import time
      
      
    # instance is created
    scheduler = sched.scheduler(time.time,
                                time.sleep)
      
    # function to print time 
    # and name of the event
    def print_event(name):
        print('EVENT:', time.time(), name)
      
    # printing starting time
    print ('START:', time.time())
      
    # checking if event queue is
    # empty or not
    print(scheduler.empty())
      
    # event entering into queue
    e1 = scheduler.enter(2, 1,
                         print_event,
                         ('1 st', ))
      
    # checking if event queue is 
    # empty or not
    print(scheduler.empty())
      
    # executing the events
    scheduler.run()

    chevron_right

    
    

    Output :

    START: 1580390318.1343799
    True
    False
    EVENT: 1580390320.136075 1 st
    
  • scheduler.queue Read-only attribute returning a list of upcoming events in the order they will be run. Each event is shown as a named tuple with the following fields: time, priority, action, argument, kwargs.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # library imported
    import sched
    import time
      
    # instance is created
    scheduler = sched.scheduler(time.time,
                                time.sleep)
      
    # function to print time 
    # and name of the event
    def print_event(name):
        print('EVENT:', time.time(), name)
      
    # printing starting time
    print ('START:', time.time())
      
    # event entering into queue
    e1 = scheduler.enter(2, 1,
                         print_event, 
                         ('1 st', ))
      
    # printing the details of
    # upcoming events in event queue
    print(scheduler.queue)
      
    # executing the events
    scheduler.run()

    chevron_right

    
    

    Output :

    START: 1580390446.8743565
    [Event(time=1580390448.8743565, priority=1, action=, argument=(‘1 st’, ), kwargs={})]
    EVENT: 1580390448.876916 1 st




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

3


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.