我创建了一个小型音频播放器,可以在我指定的网站上查找有声读物的章节,下载并播放。唯一的问题是,我无法暂停它。要播放mp3文件我使用os.system("afplay chapter.mp3")
我已经考虑过使用os.system
电话创建一个主题,但我很确定我无法以这种方式暂停。如果线程是一个循环,我可以锁定一个它需要访问的变量,并在我准备好恢复时解锁。但是,由于这个线程只是一行似乎不可能的代码。我还考虑过创建一个流程并向其发送SIGSTOP
。但由于某些未知的原因,它不会起作用。
import os, signal
from multiprocessing import Process
p = Process(target=play)
p.start()
raw_input("press enter to pause: ")
os.kill(p.pid, signal.SIGSTOP)
代码只是静默执行而不会停止进程。
我知道有替代品可以播放但是现在我只是坚持使用os.system调用。所以我的问题是,如何暂停一行线程或进程?而不是使用Process()调用创建新进程,我是否需要找到afplay的进程ID?如果是这样的话?
答案 0 :(得分:1)
os.system
创建子进程并等待该子进程退出。您可以使用os.execv
将流程替换为其他程序,或使用subprocess.Popen
创建一个子流程,您可以使用Popen.pid
找到该流程。
答案 1 :(得分:0)
为什么不直接使用子进程模块而不是subprocess和os.system?这应该可以让您更好地控制衍生过程。