| import os |
| import gradio as gr |
| from easygui import msgbox |
| import subprocess |
| import time |
| import webbrowser |
| from library.custom_logging import setup_logging |
|
|
| |
| log = setup_logging() |
|
|
| tensorboard_proc = None |
| TENSORBOARD = 'tensorboard' if os.name == 'posix' else 'tensorboard.exe' |
|
|
| def start_tensorboard(logging_dir, wait_time=5): |
| global tensorboard_proc |
|
|
| if not os.listdir(logging_dir): |
| log.info('Error: log folder is empty') |
| msgbox(msg='Error: log folder is empty') |
| return |
|
|
| run_cmd = [TENSORBOARD, '--logdir', logging_dir, '--host', '0.0.0.0', '--port', '6006'] |
|
|
| log.info(run_cmd) |
| if tensorboard_proc is not None: |
| log.info('Tensorboard is already running. Terminating existing process before starting new one...') |
| stop_tensorboard() |
|
|
| |
| log.info('Starting tensorboard...') |
| try: |
| tensorboard_proc = subprocess.Popen(run_cmd) |
| except Exception as e: |
| log.error('Failed to start Tensorboard:', e) |
| return |
|
|
| |
| time.sleep(wait_time) |
|
|
| |
| log.info('Opening tensorboard url in browser...') |
| webbrowser.open('http://localhost:6006') |
|
|
| def stop_tensorboard(): |
| global tensorboard_proc |
| if tensorboard_proc is not None: |
| log.info('Stopping tensorboard process...') |
| try: |
| tensorboard_proc.terminate() |
| tensorboard_proc = None |
| log.info('...process stopped') |
| except Exception as e: |
| log.error('Failed to stop Tensorboard:', e) |
| else: |
| log.info('Tensorboard is not running...') |
|
|
| def gradio_tensorboard(): |
| with gr.Row(): |
| button_start_tensorboard = gr.Button('Start tensorboard') |
| button_stop_tensorboard = gr.Button('Stop tensorboard') |
|
|
| return (button_start_tensorboard, button_stop_tensorboard) |
|
|