当前位置: 首页 > news >正文

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

在 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.lryc.cn/news/520305.html

相关文章:

  • Spring Boot 2 学习全攻略
  • 海豚调度DolphinScheduler-3.1.9配置windows本地开发环境
  • 【机器学习:十九、反向传播】
  • 线形回归与小批量梯度下降实例
  • SpringCloud微服务:基于Nacos组件,整合Dubbo框架
  • Golang 简要概述
  • web前端第三次作业---制作可提交的用户注册表
  • 教育邮箱的魔力:免费获取Adobe和JetBrains软件
  • sympy常用函数与错误笔记
  • 47_Lua文件IO操作
  • nginx-lua模块处理流程
  • 【大数据】机器学习-----最开始的引路
  • 【前端】自学基础算法 -- 21.图的广度优先搜索
  • ChatGPT与Claude AI:两大生成式对话模型的比较分析
  • 前端开发:盒子模型、块元素
  • 升级 CentOS 7.x 系统内核到 4.4 版本
  • 播放音频文件同步音频文本
  • springboot使用Easy Excel导出列表数据为Excel
  • day07_Spark SQL
  • 高性能现代PHP全栈框架 Spiral
  • LeetCode - #182 Swift 实现找出重复的电子邮件
  • 《解锁鸿蒙Next系统人工智能语音助手开发的关键步骤》
  • 【Linux网络编程】数据链路层 | MAC帧 | ARP协议
  • 《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统
  • 基于spingbott+html+Thymeleaf的24小时智能服务器监控平台设计与实现
  • 全栈面试(一)Basic/微服务
  • python安装完成后可以进行的后续步骤和注意事项
  • [Qt] 窗口 | 菜单栏MenuBar
  • [读书日志]从零开始学习Chisel 第十三篇:Scala的隐式参数与隐式转换(敏捷硬件开发语言Chisel与数字系统设计)
  • CMake学习笔记(1)