Python子进程,定时延迟后杀死进程
Posted
技术标签:
【中文标题】Python子进程,定时延迟后杀死进程【英文标题】:Python subprocess, kill process after timed delay 【发布时间】:2015-05-26 23:37:25 【问题描述】:我第一次使用 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】:我建议这样做:
proc = subprocess.Popen(["aplay dixie.wav"], shell=True)
# do something
proc.terminate()
【讨论】:
感谢您的建议!但是,这不起作用。 “掌声”结束后,“Dixie”继续播放。以上是关于Python子进程,定时延迟后杀死进程的主要内容,如果未能解决你的问题,请参考以下文章