我是第一次使用Python和Raspberry Pi(它是Pi 2),并试图触发一组定时命令。除了最后阶段(我想终止所有进程)外,我已经弄清了大部分内容。
逻辑如下:
-触发名为“倒数”的音频文件(.wav)
-触发另一个名为“dixie”的音频文件(.wav)
-当dixie播放时触发wget命令以触发相机上的照片
-继续播放“dixie”,直到上一个wget完成执行
-wget完成执行后,停止播放“dixie”
-触发名为“掌声”的最终音频文件(.wav)
-停止所有音频
本质上,wget是重要的,播放音频文件只是为了在我的相机拍摄照片时创造音乐。当wget完成并且鼓掌结束时,我想杀死所有音频,但是“dixie”的subprocess.Popen命令继续播放(大约40秒长)。我如何才能结束这个过程?
到目前为止,这是我的代码:
import os
import time
import subprocess
subprocess.call(["aplay countdown.wav"], shell=True)
subprocess.Popen(["aplay dixie.wav"], shell=True)
subprocess.call(["wget 'http://10.5.5.9/camera/SH?t=12345678&p=%01' -O-"], shell=True)
time.sleep(5)
subprocess.call(["aplay applause.wav"], shell=True)
subprocess.Popen.kill(["aplay dixie.wav"], shell=True)
一旦“掌声”播放完毕,我想杀死“dixie”。
我的代码产生错误:
"unbound method kill() must be called with Popen instance as first
argument (got list instance instead)"
有什么建议吗?
最佳答案
我建议这样做:
proc = subprocess.Popen(["aplay dixie.wav"], shell=True)
# do something
proc.terminate()
关于python - Python子进程,在定时延迟后终止进程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30470759/