我是第一次使用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/

10-12 12:36