我創建了一個小型音頻播放器,在我指定的網站上查看有聲讀物的章節,下載它並播放它。唯一的問題是,我無法暫停。播放我正在使用的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