import time def avancer(): return "avancer" def tg(): return "tg" def robot_obstacle(): return False def robot_execute(s): print "execution de l'ordre : ", s # /!\ variable globale env = {'obstacle': False} def main(): yield "debut de main" for i in range(10): while not env["obstacle"]: yield avancer() yield tg() env["callback"] = TODO_COMPLETER def main_loop(callback): print callback.next() for i in range(1000): env['obstacle'] = robot_obstacle() time.sleep(1) ordre_robot = TODO_COMPLETER robot_execute(ordre_robot) # execture un ordre print 'fin de la boucle evt' main_loop(env["callback"])