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

标签 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)"

有什么建议吗?

最佳答案

我建议这样做:

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

# do something 

proc.terminate()

关于python - Python子进程,在定时延迟后终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30470759/

相关文章:

html5 音频无法在 chrome 中播放

java - 在 java 中延迟一段时间后调用方法

javascript - 使用Jquery临时创建html div

vb.net - 如何在vb.net中实现小的延迟?

python - 终端表 asciitables 和编码

python - 使用 python 雪花连接器从雪花表获取列标题

python - 全局变量的实现与取消引用的变量

python - 如何找出从哪个模块导入名称?

objective-c - 判断音频文件是否为VBR

iphone - iPhone应用程序拒绝我自己的头文件类中的audioPlayerDidFinishPlaying