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

news/2025/1/15 15:54:02/

在 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/news/1563354.html

相关文章

摄像头开发新品种观鸟技术

摄像头工业产品的开发是一个复杂且精细的过程&#xff0c;涉及多个环节和技术领域。以下是对摄像头工业产品开发流程的详细分析&#xff1a; 一、前期准备 1. **市场调研**&#xff1a;了解市场需求、竞争对手的产品特点和市场占有率&#xff0c;以及潜在用户的使用习惯和需求…

Java-数据结构-栈与队列(常考面试题与单调栈)

在上一篇的学习中&#xff0c;我们学习了栈和队列的基本知识&#xff0c;以及它们对应都有哪些方法&#xff0c;在什么应用场景下如何使用&#xff0c;并且还对它们进行了模拟实现&#xff0c;而其实对于栈和队列的相关知识还远不止于此&#xff0c;而今天我们就对栈与队列进行…

C++内存泄露排查

内存泄漏是指程序动态分配的内存未能及时释放&#xff0c;导致系统内存逐渐耗尽&#xff0c;最终可能造成程序崩溃或性能下降。在C中&#xff0c;内存泄漏通常发生在使用new或malloc等分配内存的操作时&#xff0c;但没有正确地使用delete或free来释放这块内存。 在日常开发过程…

【python爬虫入门教程13--selenium的自动点击 --小小案例分享】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 《python爬虫入门教程12--selenium的安装与使用》 selenium就是一个可以实现python自动化的模块&#xff0c;上次我们更新了如何安装以及它的语法。同时我也更新了如何用爬虫…

vscode支持ssh远程开发

文章目录 一、生成ssh使用的公钥/密钥对二、使用vscode通过ssh连接服务器1.安装插件2.配置文件3.连接服务器4.新建文件夹&#xff0c;存放不同的任务5.为不同的项目选择不同的conda环境 三、使用scp命令与服务器互传文件、文件夹1.检查Windows 系统是否支持scp命令2.在Windows系…

Python----Python爬虫(Scrapy的应用:CrawlSpider 使用,爬取小说,CrawlSpider版)

一、CrawlSpider 使用 1.1、CrawlSpider CrawSpiders 是 Scrapy 框架中的一个特殊爬虫类&#xff0c;它用于处理需要跟随链接并抓取多个页面的情况。相比于基本的 Spider 类&#xff0c;CrawSpiders 提供了一个更灵活、更强大的方式来定义爬取规则。 在Scrapy中Spider是所有爬…

Linux(Centos 7.6)命令详解:split

1.命令作用 Linux系统中的一个用于拆分文件的命令。它可以将一个大文件拆分成多个小文件&#xff0c;以便于传输、存储或处理 2.命令语法 Usage: split [OPTION]... [INPUT [PREFIX]] Usage: split [选项]... [输入文件] [输出文件前缀] 3.参数详解 OPTION: -a, --suffi…

JVM虚拟机的组成 笼统理解 六大部分 类加载子系统 运行时数据区 执行引擎 本地接口 垃圾回收器 线程工具

目录 JVM虚拟机的组成&#xff1a;概述 JVM虚拟机的组成&#xff1a;详细解析 1. 类加载子系统 2. 运行时数据区 3. 执行引擎 4. 本地接口 5. 垃圾回收器 6. 线程管理与调试工具 概述 JVM&#xff08;Java Virtual Machine&#xff09;是一个虚拟计算机&#xff0c;执行…