X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bdee35a6464a810cd4e71dd2871339e423233f1b..1d047f5a110cfd542b0aedeb72f680e03f8709cd:/examples/python/actor-suspend/actor-suspend.py diff --git a/examples/python/actor-suspend/actor-suspend.py b/examples/python/actor-suspend/actor-suspend.py index 55d1965c17..2be5121327 100644 --- a/examples/python/actor-suspend/actor-suspend.py +++ b/examples/python/actor-suspend/actor-suspend.py @@ -1,18 +1,20 @@ -# Copyright (c) 2017-2019. The SimGrid Team. All rights reserved. +# Copyright (c) 2017-2021. The SimGrid Team. All rights reserved. # # This program is free software you can redistribute it and/or modify it # under the terms of the license (GNU LGPL) which comes with this package. -from simgrid import * +from simgrid import Actor, Engine, this_actor import sys -# The Lazy guy only wants to sleep, but can be awaken by the dream_master process. + def lazy_guy(): + """The Lazy guy only wants to sleep, but can be awaken by the dream_master actor""" this_actor.info("Nobody's watching me ? Let's go to sleep.") - this_actor.suspend() # - Start by suspending itself + this_actor.suspend() # - Start by suspending itself this_actor.info("Uuuh ? Did somebody call me ?") - this_actor.info("Going to sleep...") # - Then repetitively go to sleep, but get awaken + # - Then repetitively go to sleep, but get awaken + this_actor.info("Going to sleep...") this_actor.sleep_for(10) this_actor.info("Mmm... waking up.") @@ -25,22 +27,27 @@ def lazy_guy(): this_actor.info("Mmmh, I'm done now. Goodbye.") -# The Dream master + def dream_master(): - this_actor.info("Let's create a lazy guy.") # Create a lazy_guy process + """The Dream master""" + this_actor.info("Let's create a lazy guy.") # Create a lazy_guy actor lazy = Actor.create("Lazy", this_actor.get_host(), lazy_guy) this_actor.info("Let's wait a little bit...") - this_actor.sleep_for(10) # Wait for 10 seconds + this_actor.sleep_for(10) # Wait for 10 seconds this_actor.info("Let's wake the lazy guy up! >:) BOOOOOUUUHHH!!!!") - lazy.resume() # Then wake up the lazy_guy + if lazy.is_suspended(): + lazy.resume() # Then wake up the lazy_guy + else: + this_actor.error( + "I was thinking that the lazy guy would be suspended now") - this_actor.sleep_for(5) # Repeat two times: + this_actor.sleep_for(5) # Repeat two times: this_actor.info("Suspend the lazy guy while he's sleeping...") - lazy.suspend() # Suspend the lazy_guy while he's asleep + lazy.suspend() # Suspend the lazy_guy while he's asleep this_actor.info("Let him finish his siesta.") - this_actor.sleep_for(10) # Wait for 10 seconds + this_actor.sleep_for(10) # Wait for 10 seconds this_actor.info("Wake up, lazy guy!") - lazy.resume() # Then wake up the lazy_guy again + lazy.resume() # Then wake up the lazy_guy again this_actor.sleep_for(5) this_actor.info("Suspend again the lazy guy while he's sleeping...") @@ -51,7 +58,8 @@ def dream_master(): lazy.resume() this_actor.sleep_for(5) - this_actor.info("Give a 2 seconds break to the lazy guy while he's working...") + this_actor.info( + "Give a 2 seconds break to the lazy guy while he's working...") lazy.suspend() this_actor.sleep_for(2) this_actor.info("Back to work, lazy guy!") @@ -59,12 +67,15 @@ def dream_master(): this_actor.info("OK, I'm done here.") + if __name__ == '__main__': e = Engine(sys.argv) - if len(sys.argv) < 2: raise AssertionError("Usage: actor-suspend.py platform_file [other parameters]") + if len(sys.argv) < 2: + raise AssertionError( + "Usage: actor-suspend.py platform_file [other parameters]") - e.load_platform(sys.argv[1]) # Load the platform description - list = e.get_all_hosts() - Actor.create("dream_master", list[0], dream_master) + e.load_platform(sys.argv[1]) # Load the platform description + hosts = e.get_all_hosts() + Actor.create("dream_master", hosts[0], dream_master) - e.run() # Run the simulation + e.run() # Run the simulation