Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix a doc error about actors (Tutorial_algorithms)
[simgrid.git] / examples / python / actor-suspend / actor-suspend.py
index 3228532..703ba15 100644 (file)
@@ -1,18 +1,20 @@
 # Copyright (c) 2017-2019. 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. 
+# under the terms of the license (GNU LGPL) which comes with this package.
 
 from simgrid import *
 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 process"""
     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 process
     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