我正在使用python的subprocess.Popen()一次运行多个子进程。每次终止进程时,我都想在外壳上打印以下内容:
process ABC has been terminated
ABC是我自己为流程指定的名称。
我认为也许可以使用以下代码来实现此目的:process.name()
有没有一种方法可以通过subprocess.Popen()完成?
答案 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()
请注意不要选择父类用于其他用途的属性名称。