在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