X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b8df87e176f27b25534f27d7e240defa32ca35bc..9fc682676a33abb6a4cc527c09a34db3c33e5711:/examples/python/actor-yield/actor-yield.py diff --git a/examples/python/actor-yield/actor-yield.py b/examples/python/actor-yield/actor-yield.py index 39a16666b5..36f20bd4dc 100644 --- a/examples/python/actor-yield/actor-yield.py +++ b/examples/python/actor-yield/actor-yield.py @@ -1,35 +1,32 @@ -# 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. +""" +This example does not much: It just spans over-polite actor that yield a large amount +of time before ending. + +This serves as an example for the simgrid.yield() function, with which an actor can request +to be rescheduled after the other actor that are ready at the current timestamp. + +It can also be used to benchmark our context-switching mechanism. +""" + import sys -from simgrid import * +from simgrid import Actor, Engine, Host, this_actor -# This example does not much: It just spans over-polite actor that yield a large amount -# of time before ending. -# -# This serves as an example for the simgrid.yield() function, with which an actor can request -# to be rescheduled after the other actor that are ready at the current timestamp. -# -# It can also be used to benchmark our context-switching mechanism. - -# Main function of the Yielder process -class Yielder: - number_of_yields = 0 - def __init__(self, *args): - self.number_of_yields = int(args[0]) - def __call__(self): - for i in range(self.number_of_yields): - this_actor.yield_() - this_actor.info("I yielded {:d} times. Goodbye now!".format(self.number_of_yields)) +def yielder(number_of_yields): + for _ in range(number_of_yields): + this_actor.yield_() + this_actor.info("I yielded {:d} times. Goodbye now!".format(number_of_yields)) if __name__ == '__main__': e = Engine(sys.argv) e.load_platform(sys.argv[1]) # Load the platform description - e.register_actor("yielder", Yielder) # Register the class representing the actors - e.load_deployment(sys.argv[2]) + Actor.create("yielder", Host.by_name("Tremblay"), yielder, 10) + Actor.create("yielder", Host.by_name("Ruby"), yielder, 15) - e.run() # - Run the simulation + e.run() # - Run the simulation