我有一个包含"阻塞方法"的类。在该方法中,我正在听键来执行某些操作。有问题的行动是pkill
。下面我粘贴它:
def show_control(self, control):
"""docstring for control"""
if control == True:
from mkchromecast.getch import getch, pause
self.controls_msg()
try:
while(True):
key = getch()
if(key == 'p'):
if self.videoarg == True:
print('Pausing Casting Process...')
subprocess.call(['pkill', '-STOP', '-f', 'ffmpeg'])
...
事实证明ffmpeg
进程已暂停,但python脚本被暂停?我不明白为什么会这样。如果在常规脚本中创建相同的函数(不在类中更清楚),则不会发生这种情况。我尝试过使用multithreading
和multiprocessing
模块但没有成功。我究竟做错了什么?。感谢。
答案 0 :(得分:0)
我会自己回答。问题与subprocess
块内的try
有关。我要做的就是创建一个包含subprocess
启动pkill
命令的新方法:
def show_control(self, control):
"""docstring for control"""
if control == True:
from mkchromecast.getch import getch, pause
self.controls_msg()
try:
while(True):
key = getch()
if(key == 'p'):
if self.videoarg == True:
print('Pausing Casting Process...')
action = 'pause'
self.ffmpeg_handler(action)
...
def ffmpeg_handler(self, action):
if action == 'pause':
subprocess.call(['pkill', '-STOP', '-f', 'ffmpeg'])
请参阅here。