class Receiver: def __init__(self, *args): if len(args) != 1: # Receiver actor expects 1 argument: its ID raise AssertionError( "Actor receiver requires 1 parameter, but got {:d}".format(len(args))) self.mbox = Mailbox.by_name("receiver-{:s}".format(args[0])) def __call__(self): this_actor.info("Wait for my first message") while True: received = self.mbox.get() this_actor.info("I got a '{:s}'.".format(received)) if received == "finalize": break # If it's a finalize message, we're done. if __name__ == '__main__': e = Engine(sys.argv) # Load the platform description e.load_platform(sys.argv[1]) # Register the classes representing the actors e.register_actor("sender", Sender) e.register_actor("receiver", Receiver) e.load_deployment(sys.argv[2]) e.run()
this_actor.execute(98095) this_actor.info("Done.") # This simple example does not do anything beyond that def privileged(): # You can also specify the priority of your execution as follows. # An execution of priority 2 computes twice as fast as a regular one. # # So instead of a half/half sharing between the two executions, # we get a 1/3 vs 2/3 sharing. this_actor.execute(98095, priority=2) this_actor.info("Done.") # Note that the timings printed when executing this example are a bit misleading, # because the uneven sharing only last until the privileged actor ends. # After this point, the unprivileged one gets 100% of the CPU and finishes # quite quickly. i = 0 if "--" in sys.argv: i = sys.argv.index("--") e = Engine(sys.argv[0:i]) e.load_platform(sys.argv[i + 1]) Actor.create("executor", Host.by_name("Tremblay"), executor) Actor.create("privileged", Host.by_name("Tremblay"), privileged) e.run()