37 lines
1.3 KiB
Python
Executable File
37 lines
1.3 KiB
Python
Executable File
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
def find_free_port(start_port):
|
|
import socket
|
|
port = start_port
|
|
while True:
|
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
|
if s.connect_ex(('localhost', port)) != 0:
|
|
return port
|
|
port += 1
|
|
def run(exp_name, exp_root="experiments",port=None):
|
|
port = 6007 if port is None else port
|
|
max_attempts = 10
|
|
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
tensorboard_root = os.path.join(project_root, exp_root, exp_name, "tensorboard")
|
|
|
|
for attempt in range(max_attempts):
|
|
try:
|
|
print(f"Trying to launch TensorBoard on port {port}...")
|
|
subprocess.check_call([
|
|
sys.executable, "-m", "tensorboard.main",
|
|
f"--logdir={tensorboard_root}",
|
|
f"--port={port}"
|
|
])
|
|
break
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Port {port} is in use, trying next port...")
|
|
port = find_free_port(port + 1)
|
|
else:
|
|
print("Failed to launch TensorBoard after multiple attempts.")
|
|
|
|
if __name__ == "__main__":
|
|
exp_root = "experiments"
|
|
exp_name = "sample_train_100_item_overfit_foreground_0"
|
|
run(exp_name,exp_root,port=6009) |