使用python的subprocess.Popen()创建它时命名过程

时间:2019-09-24 07:30:03

标签: python subprocess popen

我正在使用python的subprocess.Popen()一次运行多个子进程。每次终止进程时,我都想在外壳上打印以下内容: process ABC has been terminated ABC是我自己为流程指定的名称。 我认为也许可以使用以下代码来实现此目的:process.name()

有没有一种方法可以通过subprocess.Popen()完成?

2 个答案:

答案 0 :(得分:1)

使用subprocess并没有可移植的方法,可以结合使用其他软件包,也可以检查https://github.com/dvarrazzo/py-setproctitle库。

使用该模块,您可以命名一个流程标题,然后对其进行访问并轻松打印所需的输出。

答案 1 :(得分:1)

这是关于继承用途的教科书示例。

import subprocess

class NamedPopen(subprocess.Popen):
     """
     Like subprocess.Popen, but returns an object with a .name member
     """
     def __init__(self, *args, name=None, **kwargs):
         self.name = name
         super().__init__(*args, **kwargs)

fred = NamedPopen('sleep 11; echo "yabba dabba doo"', shell=True, name="fred")
barney = NamedPopen('sleep 22; echo "hee hee, okay fred"', name="barney", shell=True)
print('... stay tuned ...')
fred.wait()
barney.wait()

请注意不要选择父类用于其他用途的属性名称。