在python中的函数内定义子进程?

在python中的函数内定义子进程?,python,subprocess,Python,Subprocess,我对下面的代码有问题 def play(): process = "......" h=subprocess.Popen(process) def stop(): h.terminate() 它说它不能这样做,因为h没有定义。这是因为它不是全局的,如果是的话,我如何使它成为全局的,以便它可以找到它。我曾尝试在程序开始时使用global定义变量h,但它不起作用 谢谢这在函数范围play中定义了一个名为h的变量: def play(

我对下面的代码有问题

    def play():
        process = "......"
        h=subprocess.Popen(process)

    def stop():
        h.terminate()
它说它不能这样做,因为h没有定义。这是因为它不是全局的,如果是的话,我如何使它成为全局的,以便它可以找到它。我曾尝试在程序开始时使用
global
定义变量
h
,但它不起作用


谢谢

这在函数范围
play
中定义了一个名为
h
的变量:

def play():
    process = "......"
    h=subprocess.Popen(process)
函数范围内没有名为
h
的变量
stop
,因此此操作失败:

def stop():
    h.terminate()
无论如何,
h
必须发送到
stop
。我有两种看法

第一个选项,
play
返回
h
stop
接收i作为参数(如中所示)

第二个选项,创建一个类:

class Player:
    def __init__(self):
        self.process = None

    def play(self):
        assert self.process is None, "Already playing"
        self.process = subprocess.Popen("...")

    def stop(self):
        assert self.process is not None, "Not playing"
        self.process.terminate()
        self.process = None