Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines for 2023.
[simgrid.git] / examples / python / actor-kill / actor-kill.py
index 2b53ced..43960b9 100644 (file)
@@ -1,14 +1,18 @@
-# Copyright (c) 2017-2019. The SimGrid Team. All rights reserved.
+# Copyright (c) 2017-2023. 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 *
+"""
+Usage: actor-kill.py platform_file [other parameters]
+"""
+
 import sys
+from simgrid import Actor, Engine, Host, this_actor
 
 
-def victrim_a_fun():
-    this_actor.on_exit(lambda: this_actor.info("I have been killed!"))
+def victim_a_fun():
+    this_actor.on_exit(lambda forcefully: this_actor.info("I have been killed!" if forcefully else "I finish now."))
     this_actor.info("Hello!")
     this_actor.info("Suspending myself")
     this_actor.suspend()                        # - Start by suspending itself
@@ -19,35 +23,35 @@ def victrim_a_fun():
     this_actor.info("Bye!")
 
 
-def victrim_b_fun():
+def victim_b_fun():
     this_actor.info("Terminate before being killed")
 
 
 def killer():
-    this_actor.info("Hello!")  # - First start a victim process
-    victrim_a = Actor.create("victim A", Host.by_name("Fafard"), victrim_a_fun)
-    victrim_b = Actor.create("victim B", Host.by_name("Jupiter"), victrim_b_fun)
+    this_actor.info("Hello!")  # - First start a victim actor
+    victim_a = Actor.create("victim A", Host.by_name("Fafard"), victim_a_fun)
+    victim_b = Actor.create("victim B", Host.by_name("Jupiter"), victim_b_fun)
     this_actor.sleep_for(10)  # - Wait for 10 seconds
 
     # - Resume it from its suspended state
     this_actor.info("Resume the victim A")
-    victrim_a.resume()
+    victim_a.resume()
     this_actor.sleep_for(2)
 
     this_actor.info("Kill the victim A")   # - and then kill it
-    Actor.by_pid(victrim_a.pid).kill()       # You can retrieve an actor from its PID (and then kill it)
+    Actor.by_pid(victim_a.pid).kill()       # You can retrieve an actor from its PID (and then kill it)
 
     this_actor.sleep_for(1)
 
     # that's a no-op, there is no zombies in SimGrid
-    this_actor.info("Kill victrim_b, even if it's already dead")
-    victrim_b.kill()
+    this_actor.info("Kill victim B, even if it's already dead")
+    victim_b.kill()
 
     this_actor.sleep_for(1)
 
     this_actor.info("Start a new actor, and kill it right away")
-    victrim_c = Actor.create("victim C", Host.by_name("Jupiter"), victrim_a_fun)
-    victrim_c.kill()
+    victim_c = Actor.create("victim C", Host.by_name("Jupiter"), victim_a_fun)
+    victim_c.kill()
 
     this_actor.sleep_for(1)
 
@@ -68,7 +72,7 @@ if __name__ == '__main__':
             "Usage: actor-kill.py platform_file [other parameters]")
 
     e.load_platform(sys.argv[1])     # Load the platform description
-    # Create and deploy killer process, that will create the victim actors
+    # Create and deploy killer actor, that will create the victim actors
     Actor.create("killer", Host.by_name("Tremblay"), killer)
 
     e.run()