子流程命名

2024-04-25 13:19:14 发布

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

这可能是一个愚蠢的问题,但是,在使用python多处理模块时,有没有办法编辑与派生子进程关联的进程名称?你知道吗

这样做的目的是能够使用命令行实用程序topps来检查哪些子进程仍在运行并且可能已挂起。比如说我有一个剧本叫MyScript.py文件它启动n个子进程,然后使用top,最好看到以下进程:

MyScript.py
MyScript.py <tag1>
Myscript.py <tag2>
...
Myscript.py <tagn>

而不仅仅是

MyScript.py
MyScript.py
MyScript.py
...
MyScript.py

Tags: 模块文件命令行py目的实用程序名称编辑
2条回答

可以做的(尽管它看起来有点不太正常)是通过^{}启动进程,如下所示:

import subprocess
subprocess.call(["python", "myscript.py", "-tag", "tag1"])

然后,当看到-tag参数时,需要调整__main__以分支到正确的函数。这似乎有些过分,因为在Linux上,子进程只是一个fork(),不会重新解释python文件等,但在Windows上,多处理就是这样工作的。你知道吗

不可以。Python无法控制出现在“top”命令输出中的进程名称。这是由操作系统管理的。你知道吗

如果您使用的是multiprocessing.Process类,那么进程ID在对象的PID属性中可用,因此您可以将其打印出来并与top的输出交叉引用。或者您可以让您的程序使用subprocess模块调用top并过滤输出,以便仅为您提供相关的输出。你知道吗

相关问题 更多 >