如何识别运行中Jupyter Notebook对应的PID以调整进程优先级?
解决方法
方法1:通过Jupyter内核进程关联FEniCS子进程
每个Jupyter Notebook对应一个ipykernel_launcher进程,FEniCS生成的所有线程/进程都是它的子进程,步骤如下:
列出所有运行的Jupyter内核进程:
ps -ef | grep ipykernel_launcher输出会显示每个内核的PID,部分启动参数包含对应Notebook的路径或内核ID。若看不到Notebook路径,查看进程的命令行详情:
cat /proc/<ipykernel_pid>/cmdline | tr '\0' ' '其中
--file=/path/to/your/notebook.ipynb字段会直接对应到目标Notebook文件。找到目标内核PID后,获取它的所有子进程(即FEniCS相关进程/线程):
CHILD_PIDS=$(pgrep -P <ipykernel_pid>)批量调整优先级(数值越小优先级越高,范围-20到19,负数优先级需要sudo权限):
# 调整内核进程本身 sudo renice -n -5 -p <ipykernel_pid> # 调整所有子进程 sudo renice -n -5 -p $CHILD_PIDS
方法2:用htop树形视图批量调整(无需中断)
htop的树形视图可以直观关联Notebook内核和FEniCS子进程:
- 启动htop:
htop - 按
F5切换到树形视图,找到jupyter-notebook主进程,展开其子节点,每个子节点对应一个Notebook的ipykernel_launcher进程,其下的子进程就是FEniCS生成的线程/进程。 - 选中目标
ipykernel_launcher进程,按空格标记,再展开选中所有关联的FEniCS子进程(同样按空格标记)。 - 按
F7打开renice调整窗口,输入目标优先级(比如-5),按回车完成批量调整。
方法3:后续启动时提前标记(预防问题)
如果以后再启动不同优先级的Notebook,可以通过环境变量标记,方便后续快速定位:
# 启动高优先级Notebook时设置环境变量 NOTEBOOK_PRIORITY=high jupyter notebook your_high_prio_notebook.ipynb
之后调整时,直接过滤带该环境变量的进程:
# 找到所有高优先级Notebook的内核进程 ps aux | grep "NOTEBOOK_PRIORITY=high" | grep -v grep
再按方法1的步骤批量renice即可。
内容的提问来源于stack exchange,提问作者abukaj
相关产品推荐
相关产品推荐

