You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python多进程Process名称同步到ps、top等系统工具

让Python多进程自定义名称在系统工具中实时显示的方案

问题描述

通过multiprocessing.Process(..., name="procName")创建的进程,ps等系统级进程跟踪工具无法识别Python内部设置的自定义名称,只会显示与父进程一致的名称。此前尝试用ctypes调用libc的prctl修改进程名,但仅在进程变为僵死状态时才能在ps中正确显示,运行中的长进程无法同步更新名称,只能通过导出日志并交叉引用PID来关联进程名,操作繁琐。

可行解决方案

使用第三方包setproctitle即可实现运行中进程名称的实时修改,让ps等系统工具直接显示自定义的进程名称,无需手动映射PID与进程名。

原尝试的无效脚本(仅进程结束后生效)

from multiprocessing import current_process, Process, active_children
import time

def set_proc_name(newname):
    from ctypes import cdll, byref, create_string_buffer
    libc = cdll.LoadLibrary('libc.so.6')
    buff = create_string_buffer(len(newname)+1)
    buff.value = newname
    s = libc.prctl(15, byref(buff), 0, 0, 0)
    return s

def get_proc_name():
    from ctypes import cdll, byref, create_string_buffer
    libc = cdll.LoadLibrary('libc.so.6')
    buff = create_string_buffer(128)
    # 16 == PR_GET_NAME from <linux/prctl.h>
    libc.prctl(16, byref(buff), 0, 0, 0)
    return buff.value

补充

@AKX 推荐的setproctitle包可实现该功能,后续会研究其实现方式并更新。


内容的提问来源于stack exchange,提问作者Elysiumplain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:30:10