子流程的命名

Naming of subprocesses

这可能是个愚蠢的问题,但是,在使用 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

没有。 Python 无法控制出现在 "top" 命令输出中的进程名称。即由 OS.

管理

如果您使用 multiprocessing.Process class,进程 ID 在 PID attribute of the object, so you can print that out and cross-reference it with the output of top. Or you could have your program call top with the subprocess 模块中可用,并过滤输出以仅向您提供相关输出。

可以 做的(尽管看起来有点老套)是通过 subprocess 启动您的进程,如下所示:

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

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