在 WSL 中使用 Jupyter Notebook 的 TensorBoard 启动问题与解决方法

ops/2025/1/13 12:45:40/

在 WSL(Windows Subsystem for Linux)环境中,通过 Jupyter Notebook 使用

%tensorboard --logdir outputs

有时会出现 “Timed out waiting for TensorBoard to start” 错误。常见原因通常是先前的 TensorBoard 进程尚未结束,占用了默认端口 (6006) 或相关资源。以下列出几种常用解决方法。


1. 终止已有的 TensorBoard 进程

1.1 在 Notebook / 终端手动终止

  1. 查看所有正在运行的 TensorBoard 进程:
    ps aux | grep tensorboard
    
    (也可用 lsof -i:6006netstat -tulpn | grep 6006 查看端口占用)
  2. 找到对应的 PID 后,用 kill 或 kill -9 终止进程:
    kill <PID>
    # 或者
    kill -9 <PID>
    
  3. 然后重新在 Notebook 中运行:
    %tensorboard --logdir=outputs --port=6006
    

1.2 在 Notebook 中“自动”清理

可以在 Notebook 中一键清理所有带有 tensorboard 关键字的进程:

import os
os.system("pkill -f 'tensorboard'")

然后再执行:

%tensorboard --logdir=outputs

2. 更换端口号

若端口 6006 被占用,也可以显式指定新的端口号,例如:

%tensorboard --logdir=outputs --port=6007

若依然出现超时,可换其他端口,或让系统自动分配端口:

%tensorboard --logdir=outputs --port=0

如果需要从 Windows 浏览器访问 TensorBoard,记得加上 --host=0.0.0.0


3. 处理“僵尸进程(defunct)”

ps aux | grep tensorboard 里若出现 <defunct>,说明进程已退出但父进程尚未回收:

  1. 查找并结束父进程

    ps -ef | grep <子进程PID>
    kill <父进程PPID>
    

    或者在 Jupyter Notebook 中选择 Kernel -> Restart 重启内核。

  2. 重启对应的 Jupyter Notebook

    jupyter notebook list
    # 找到该 Notebook 进程后 kill,然后重新启动
    
  3. 重启整个 WSL 子系统(若无从下手时)

    wsl --shutdown
    

    然后重新打开 WSL/Ubuntu。


小结

  1. 端口被占用僵尸进程 是导致 TensorBoard 启动超时的常见原因。
  2. 常用处理方式:
    • 手动或自动 kill 旧进程,释放端口
    • 显式更换端口,或令系统自动分配端口
    • 若出现 <defunct> 状态,需要终止 / 重启父进程或 Kernel
    • 必要时可重启整个 WSL 子系统
  3. 建议:及时清理不再使用的 TensorBoard 进程,或在 Notebook 中定制“一键清理脚本”简化操作。

以上就是在 WSL 中使用 Jupyter Notebook 时,TensorBoard 可能遇到的启动超时问题及主要解决思路。祝学习与调试顺利!


http://www.ppmy.cn/ops/149735.html

相关文章

mv指令详解

&#x1f3dd;️专栏&#xff1a;计算机操作系统 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 主要功能 常用选项详解 1. 移动文件或目录 2. 重命名文件或目录 3. -i&am…

pytest+allure 入门

使用allure如何生成自动化测试报​​​​​​告 &#xff1f;一文详解allure的使用 。_allure测试报告-CSDN博客 例子&#xff1a; import allure import pytest import osallure.epic("闹钟") allure.feature("闹钟增删") class TestSchedule():def setu…

网络安全 | DevSecOps:将安全融入DevOps开发生命周期

网络安全 | DevSecOps&#xff1a;将安全融入DevOps开发生命周期 一、前言二、DevSecOps 的概念与原则2.1 DevSecOps 的概念2.2 DevSecOps 的原则 三、DevSecOps 的关键实践3.1 安全需求分析与管理3.2 安全设计与架构3.3 安全编码实践3.4 安全测试策略3.5 安全部署与运维 四、D…

AWS简介

AWS 一&#xff0c;AWS是什么&#xff1f; AWS的全称是 Amazon Web Services 的缩写&#xff0c;是亚马逊公司提供的一套广泛且应用广泛的云端服务。 AWS提供了超过200项全功能的服务&#xff0c;来自数据中心数据中心遍布全球多个地理位置&#xff0c;这些服务包括计算能力&…

Windows自动化Python pyautogui RPA操作

依赖包 import time import pyautogui import pyperclip import os import psutil from pywinauto.application import Application睡眠&#xff1a; pyautogui.sleep(1)鼠标事件&#xff1a; pyautogui.moveTo(100, 100, duration0.25) pyautogui.click(100, 100, duration0.…

牛客网刷题 ——C语言初阶(6指针)——倒置字符串

1. 题目描述&#xff1a;倒置字符串 牛客网OJ题链接 描述 将一句话的单词进行倒置&#xff0c;标点不倒置。比如 I like beijing. 经过函数后变为&#xff1a;beijing. like I 输入描述&#xff1a; 每个测试输入包含1个测试用例&#xff1a; I like beijing. 输入用例长度不超…

js单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 静态方法实现 class SingleTon{//全局的访问点static getInstance(){// 保证一个类只有一个实例if(!this.instance){this.instancenew SingleTon()}return this.instance}}let aSingleTon.getInstance()let bSing…

怎样提高服务器中的数据传输速度?

服务器中的数据传输速度会影响着用户的体验感&#xff0c;当企业中的数据传输速度出现卡顿或者是过慢时&#xff0c;用户不能及时浏览到所需的内容&#xff0c;给用户造成不好的体验感&#xff0c;那么企业该怎样才能提高服务器中的数据传输速度呢&#xff1f; 服务器之间如何传…