我有一个覆盆子pi,我用4键键盘连接。使用来自闪光灯的信号,我把它连接起来运行一些方法。
#sender
while True:
if buttonIsDown == True: signal.send()
#reciever
@signal.connect
def sayHI():
print("1")
time.sleep(10)
print("2")
这样可以正常工作,但是当我第二次按下按钮时(按下前一个按钮的10秒钟内),当time.sleep(10)
中的线程暂停时,它不会触发该方法。
如果方法仍然暂停(可能在另一个线程中),我怎么能让它再次触发该方法
答案 0 :(得分:0)
这是一个老问题,但对其他人来说仍然有用。
每次发出信号时都可以启动一个新线程,这样一旦发生了所有事件,你就可以捕获它们。请记住,在您的代码中,由于您有while True
,因此信号永远不会连接到函数,您应该以相反的顺序定义它们。
以下是一个基于代码的工作示例:
import threading
from blinker import signal
from time import sleep
custom_signal = signal(name='custom')
@custom_signal.connect
def slot(sender):
def say_hello():
print("1")
sleep(10)
print("2")
threading.Thread(target=say_hello).start()
while True:
value = int(input('Press 1 to continue: '))
if value == 1:
custom_signal.send()
else:
break