我现在有2个线程。一个必须定义另一个何时可以运行。理想的情况是第一个线程检查某些信号,如果足够,它将设置事件,以便我的第二个线程可以在定义的时间间隔内完成其工作。之后,我希望第一个线程返回其工作,然后再次重复所有操作。
我正在寻找一种解决方案来实现这一目标,因此我现在正在尝试使用threading.Event()。我已经尝试过使用锁和队列,但是我相信该事件对我来说是最合适的解决方案。
thread-1-code-part:
ser.write(str.encode('AT+CSQ\r'))
time.sleep(20)
if (z.startswith("+CSQ")):
a = int(z[5])
if a >= 3:
trigger.set()
print('Qualidade do sinal', z[5], 'é suficiente')
print('Trigger = ', trigger.isSet())
trigger.clear()
time.sleep(20)
print('Trigger = ', trigger.isSet())
else:
print('Buscando Sinal...')
time.sleep(0.5)
thread-2-code-part:
if trigger.is_set():
print('Pós Trigger')
while True:
q = ser.readline()
w = q.rstrip()
e = w.decode('utf-8')
if (e == 'SBDRING'):
print ('Ring Alert recebido')
ser.write(str.encode('AT+SBDIX\r'))
time.sleep(5)
ser.write(str.encode('AT+SBDRT\r'))
time.sleep(2)
assist_var = 0
lista = []
while len(lista) < 12:
u = ser.readline()
i = u.rstrip()
o = i.decode('utf-8')
if len(o) > 1 :
lista.append(o)
assist_var = assist_var + 1
#print(lista)
#print('assist_var = ', assist_var)
if assist_var == 7:
print('Você recebeu :', lista[5])
我已经尝试使用trigger.wait(),但是什么也没有发生。这样,我的代码仅运行第一个线程,如果设置了事件,则运行一个事件,而我的第二个线程则无法启动。我也不确定是否应该在x秒后从我的第一个线程中删除event.clear(),还是应该在完成应做的事情后从第二个线程中删除。
@edit:我正在使用类来设置两个线程,并且正在启动和加入这两个线程。
感谢您的时间!