pytorch-lightning
46 строк · 1.3 Кб
1import logging
2import sys
3import time
4
5from lightning.app import LightningApp, LightningFlow, LightningWork
6
7logger = logging.getLogger(__name__)
8logger.setLevel(logging.INFO)
9logger.addHandler(logging.StreamHandler(sys.stdout))
10
11
12class SimpleWork(LightningWork):
13def __init__(self):
14super().__init__(cache_calls=False, parallel=True, raise_exception=False)
15self.is_running_now = False
16
17def run(self):
18self.is_running_now = True
19print("work_is_running")
20for i in range(1, 10):
21time.sleep(1)
22if i % 5 == 0:
23raise Exception(f"invalid_value_of_i_{i}")
24print(f"good_value_of_i_{i}")
25
26
27class RootFlow(LightningFlow):
28def __init__(self):
29super().__init__()
30self.simple_work = SimpleWork()
31
32def run(self):
33print("useless_garbage_log_that_is_always_there_to_overload_logs")
34self.simple_work.run()
35if not self.simple_work.is_running_now:
36pass
37# work is not ready yet
38print("waiting_for_work_to_be_ready")
39else:
40print("flow_and_work_are_running")
41logger.info("logger_flow_work")
42time.sleep(0.1)
43
44
45if __name__ == "__main__":
46app = LightningApp(RootFlow(), log_level="debug")
47