[英]How to run 2 files(.py) concurrently and update the variable to another file?
[英]How to run three ".py" files with sound concurrently?
首先,我的英語可能很笨拙。 對不起。
我有一個 pi 零 w。
樹莓派開機后,有3個.py
文件自動運行。
但有一些問題。
A.py
, B.py
, C.py
這三個都可以使用mpg123
播放聲音。
A
和B
正在等待每個按鈕輸入,而C
繼續作為傳感器工作。
在C
,聲音繼續,如果在A
或B
按下按鈕,則殺死C
並使其恢復生機。
問題:
如果我使用python ~.py &
並嘗試運行另一個.py,則返回后台的.py 的聲音不起作用,並且該文件的功能不起作用。 但是,如果我使用ps -ef
檢查,則該文件還活着。
確切地說,它在mpg123
命令處停止。 mpg123
基本信息出來了,然后不播放了,然后.py就停止了。
我把殺掉C.py
的代碼放在A.py
或者B.py
,工作完成后再次保存,但是第二次操作就斷了。
當按下 A 和 B 按鈕時,我只希望 C 的 mpg123 安靜。 我希望 C 在 A 和 B 結束時工作。
代碼A.py
- email_send
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"])
單獨運行是沒有問題的,但是如果用nohup
或者&
一起運行,就會壞掉。
當按下 A.py 和 B.py 的按鈕或任務完成時,我想通過向 C.py 發出信號來停止聲音。 我心里明白,但我不知道為什么。
我怎樣才能做到這一點?
感謝他。
這並不完美,因為我的第一個多線程,但我正在尋找的解決方案是正確的。
import RPi.GPIO as GPIO
import sys
import signal
import time
from email_test import sendMail
from razer_test import runtof
import subprocess
from subprocess import call
import threading
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
push_red = 22
push_white = 23
GPIO.setup(push_red, GPIO.IN)
GPIO.setup(push_white, GPIO.IN)
email_flag = 0 # control flag for Problem 1.
main_flag = 0
def Mail(self):
global email_flag
while True:
if GPIO.input(push_red) == 0:
email_flag = 1
subprocess.Popen(["mpg123", "Email_voice.mp3"])
sendMail() #code A.py
email_flag = 0
time.sleep(0.1)
def razer(self):
global email_flag
global main_flagg
runtof(email_flag,main_flag) #code C.py
thread_Mail = threading.Thread(target=Mail)
thread_Mail.start()
thread_razer = threading.Thread(target=razer)
thread_razer.start()
'''
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.