python多处理进程的名称重复

2024-09-28 01:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python的多处理库。在主进程内部,我创建了另一个进程。当我在终端上执行ps aux时,我得到两个同名的条目

ps aux | grep multithreadTest
abhishek  9017 57.6  0.1 121888 11412 pts/8    Rl+  21:09   0:04 python multithreadTest.py
abhishek  9018 16.2  0.0  48156  7096 pts/8    R+   21:09   0:01 python multithreadTest.py

这两个过程都需要相互通信,并且正在执行两个不同的任务。这是有点混淆哪个pid在做什么,因为它们显示完全相同的名称。这不利于故障排除。我的代码将部署在生产服务器上,并由SRE人员管理。对于他们来说,为什么有两个相同任务的实例可能会让他们感到困惑

是否有办法为我正在创建的流程提供一个更具描述性的名称以显示在ps aux上?我知道在C++中是可能的。p>

一种方法是使用不同的名称编写两个python脚本,并使用一个manager bash脚本调用这两个脚本。但这样一来,两者将变得不相关,难以进行管理和沟通

任何帮助都将不胜感激


Tags: py脚本名称终端进程过程条目grep
1条回答
网友
1楼 · 发布于 2024-09-28 01:26:02

它们具有相同的hame,因为所有进程都来自同一主进程

您需要使用专用的系统工具来重命名进程名称。例如setproctitle模块: pip install setproctitle

然后在进程函数中调用setproctitle.setproctitle("new child process name")

下面是一个小例子:

from multiprocessing import Process
import setproctitle
import time

def a_worker():
    setproctitle.setproctitle("procA")
    time.sleep(10)

def b_worker():
    setproctitle.setproctitle("procB")
    time.sleep(10)

if __name__ == "__main__":
    print("Master process title:", setproctitle.getproctitle())

    a_proc = Process(target=a_worker)
    b_proc = Process(target=b_worker)

    # Spawn processes
    a_proc.start() 
    b_proc.start()

    # Wait for processes to terminate
    a_proc.join()
    b_proc.join()

    print("Master process title after kids:", setproctitle.getproctitle())

ps -fu的输出:

363  5.2  0.1  29736 10524 tty1     S    01:25   0:00  \_ python3 ab.py
370  0.0  0.0  29736  4424 tty1     S    01:25   0:00      \_ procA
371  0.2  0.0  29736  4216 tty1     S    01:25   0:00      \_ procB

相关问题 更多 >

    热门问题