Python 如何运行“三个”;。";同时使用声音的文件?
首先,我的英语可能不太好用。对不起。Python 如何运行“三个”;。";同时使用声音的文件?,python,raspberry-pi,subprocess,background-process,Python,Raspberry Pi,Subprocess,Background Process,首先,我的英语可能不太好用。对不起。 我有一个π0 w. 当Raspberry Pi通电时,将自动运行3个.py文件。 但是我有一些问题 A.py,B.py,C.py 这三个都可以使用mpg123播放声音 A和B正在等待每个按钮输入,C继续作为传感器工作。 在C中,声音继续,如果按下a或B中的按钮,则杀死C,使其恢复生命 问题: 如果我使用python~.py&并尝试运行另一个.py,返回到后台的.py声音不起作用,该文件的功能也不起作用。但是如果我使用ps-ef进行检查,则该文件是活动的 确切
我有一个π0 w.
当Raspberry Pi通电时,将自动运行3个
.py
文件。但是我有一些问题
A.py
,B.py
,C.py
这三个都可以使用mpg123
播放声音A
和B
正在等待每个按钮输入,C
继续作为传感器工作。在
C
中,声音继续,如果按下a
或B
中的按钮,则杀死C
,使其恢复生命
问题:
python~.py&
并尝试运行另一个.py,返回到后台的.py声音不起作用,该文件的功能也不起作用。但是如果我使用ps-ef
进行检查,则该文件是活动的
确切地说,它在mpg123
命令处停止mpg123
Basic information出现,然后它不播放,然后.py停止播放
C.py
的代码放入A.py
或B.py
中,在工作完成后再次保存它,但在第二次操作时它会中断
A.py
-发送电子邮件
import subprocess
from subprocess import call
def sendmail():
now_ip = call(["hostname", "-I"])
myip = now_ip + "~"
call(["wget", "-O", "test_img.jpeg", myip])
try:
while True:
if GPIO~ A button Push:
call(["pkill","-9","-ef","C.py"])
call(["pkill","-9","-ef","C.mp3"])
subprocess.Popen(["mpg123", "A.mp3"])
sendMail()
call(["python","C.py"])
except
代码B.py
-数据发送
# Similar to A
代码C.py
-i2c
import subprocess import call
while True:
if 0<~<100:
call(["mpg123", "C.mp3"])
导入子流程导入调用
尽管如此:
如果0感谢他。
这并不完美,因为我的第一个多线程,但我所寻找的解决方案是正确的
将RPi.GPIO导入为GPIO
导入系统
输入信号
导入时间
从电子邮件\u测试导入sendMail
从razer_测试导入runtof
导入子流程
从子流程导入调用
导入线程
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
按下红色=22
推白=23
GPIO.setup(按下红色,GPIO.IN)
GPIO.setup(推白,GPIO.IN)
email_flag=0#问题1的控制标志。
主标志=0
def邮件(自我):
全球电子邮件标志
尽管如此:
如果GPIO.input(按下红色)==0:
email_flag=1
子进程Popen([“mpg123”,“Email_voice.mp3”])
sendMail()#代码A.py
电子邮件\u标志=0
睡眠时间(0.1)
def剃须刀(自身):
全球电子邮件标志
全球主标志
runtof(email_标志,main_标志)#代码C.py
线程\邮件=线程。线程(目标=邮件)
线程\u Mail.start()
thread\u razer=threading.thread(target=razer)
线程\u razer.start()
'''
您是否尝试过使用线程或多处理模块?我刚刚了解了多线程。谢谢。我正在寻找它,但我使用的'subpression'似乎是一个类似的函数。子进程(很容易)不允许并发执行,这似乎是您真正想要的!。我用过线,你很好。请在下面展示您的解决方案