Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines for 2023.
[simgrid.git] / examples / python / actor-create / actor-create.py
index c8719b7..2c7f623 100644 (file)
@@ -1,23 +1,25 @@
-# Copyright (c) 2006-2019. The SimGrid Team. All rights reserved.
+# Copyright (c) 2006-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.
 
-# This example shows how to declare and start your actors.
-#
-# The first step is to declare the code of your actors (what they do exactly does not matter to this example) and then
-# you ask SimGrid to start your actors. There is three ways of doing so:
-# - Directly, by instantiating your actor as parameter to Actor::create()
-# - By first registering your actors before instantiating it;
-# - Through the deployment file.
-#
-# This example shows all these solutions, even if you obviously should use only one of these solutions to start your
-# actors. The most advised solution is to use a deployment file, as it creates a clear separation between your
-# application and the settings to test it. This is a better scientific methodology. Actually, starting an actor with
-# Actor.create() is mostly useful to start an actor from another actor.
+"""
+This example shows how to declare and start your actors.
+
+The first step is to declare the code of your actors (what they do exactly does not matter to this example) and then
+you ask SimGrid to start your actors. There is three ways of doing so:
+- Directly, by instantiating your actor as parameter to Actor::create()
+- By first registering your actors before instantiating it;
+- Through the deployment file.
+
+This example shows all these solutions, even if you obviously should use only one of these solutions to start your
+actors. The most advised solution is to use a deployment file, as it creates a clear separation between your
+application and the settings to test it. This is a better scientific methodology. Actually, starting an actor with
+Actor.create() is mostly useful to start an actor from another actor.
+"""
 
 import sys
-from simgrid import *
+from simgrid import Actor, Engine, Host, Mailbox, this_actor
 
 
 def receiver(mailbox_name):
@@ -58,18 +60,13 @@ class Sender:
 
     Later, this actor class is instantiated twice in the simulation.
     """
-    mbox = "mb42"
-    msg = "GaBuZoMeu"
-
-    def __init__(self, *args):
-        if len(args) > 0:
-            self.msg = args[0]
-        if len(args) > 1:
-            self.mbox = args[1]
-        if len(args) > 2:
-            raise AssertionError(
-                "Actor sender requires 2 parameters, but got only {:d}".format(len(args)))
 
+    def __init__(self, msg="GaBuZoMeu", mbox="mb42"):
+        self.msg = msg
+        self.mbox = mbox
+
+    # Actors that are created as object will execute their __call__ method.
+    # So, the following constitutes the main function of the Sender actor.
     def __call__(self):
         this_actor.info("Hello s4u, I have something to send")
         mailbox = Mailbox.by_name(self.mbox)
@@ -79,7 +76,7 @@ class Sender:
 
 
 if __name__ == '__main__':
-    """Here comes the main function of your program"""
+    # Here comes the main function of your program
 
     # When your program starts, you have to first start a new simulation engine, as follows
     e = Engine(sys.argv)