我创建了一个小型音频播放器,在我指定的网站上查看有声读物的章节,下载它并播放它。唯一的问题是,我无法暂停。播放我正在使用的mp3文件os.system("afplay chapter.mp3")
在Python中暂停进程或线程
我想过创建一个线程,其中调用了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)
该代码只是在不停止进程的情况下静默执行。
我知道还有其他的afplay,但现在我只是坚持os.system调用。所以我的问题是,如何暂停单线程或进程?我需要找到afplay的进程ID,而不是使用Process()调用创建新进程?如果是这样如何?
你怎么使用'multiprocessing'? - 这是针对不同的场景。我认为'play'是一个调用'os.system(“afplay chapter.mp3”)''的python函数。为什么不使用'subprocess'模块而不是'subprocess'和'os.system'?这应该让你更好地控制产生的进程。 – scytale 2012-07-17 13:21:21
我以前没有使用过程,也不知道
subprocess
存在。谢谢你告诉我!我在命令行中试过了,它只是做了我需要的!我希望我能接受评论! ;) – Harrison 2012-07-17 13:36:50