Python子进程,定时延迟后终止进程

时间:2015-05-26 23:37:26

标签: python audio delay nonblocking

我第一次使用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)"

有任何建议吗?

1 个答案:

答案 0 :(得分:0)

我建议这样做:

proc = subprocess.Popen(["aplay dixie.wav"], shell=True)

# do something 

proc.terminate()