子流程的命名
Naming of subprocesses
这可能是个愚蠢的问题,但是,在使用 python 多处理模块时,是否有办法编辑与生成的子进程关联的进程名称?
它的预期用途是能够使用命令行实用程序 top
或 ps
检查哪些子进程仍然 运行 并且可能已挂起。例如。假设我有一个名为 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 上,这就是多处理的工作方式。
这可能是个愚蠢的问题,但是,在使用 python 多处理模块时,是否有办法编辑与生成的子进程关联的进程名称?
它的预期用途是能够使用命令行实用程序 top
或 ps
检查哪些子进程仍然 运行 并且可能已挂起。例如。假设我有一个名为 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 上,这就是多处理的工作方式。