python - 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++ 中是可能的。
一种方法是编写两个具有不同名称的 python 脚本,并使用一个管理器 bash 脚本来调用它们。但是这样一来,他们俩就会变得毫无关联,管理和沟通就会很困难。
任何帮助将不胜感激。
解决方案
它们具有相同的 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
推荐阅读
- java - 如何在 Android 中从 Java Image 数据类型设置 ImageView 资源
- ios - Documents文件夹路径ios app中的标识符是什么意思?
- ios - 无法将“Int”类型的值分配给“Int?.Type”Swift 5
- javascript - 检查是否在 JavaScript 中阻止了与 YouTube 的连接
- google-cloud-platform - 如何检查 GCP 中的导出操作是否完成?
- vim - How to exec Vim
command in function when insert mode? - sql - SQL MERGE - 当不匹配时使用选择表插入
- r - 如何在 R 中将日期从 mm/dd/YYYY 转换为 dd/mm/YYYY?
- javascript - 无法使用 ipfs.add() 将图像上传到 ipfs
- c# - .NET CORE 3.1 ApiController 装饰器是否使用 System.Text.Json 返回 json?