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和B按钮时,我只希望C的mpg123安静。我希望C在A和B结束时起作用

    代码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'似乎是一个类似的函数。子进程(很容易)不允许并发执行,这似乎是您真正想要的!。我用过线,你很好。请在下面展示您的解决方案