Python 带闪烁器的异步/多线程
我有一个树莓圆周率,我已经连接了一个4键键盘。使用blinker的信号,我把它连接起来运行一些方法Python 带闪烁器的异步/多线程,python,multithreading,python-2.7,asynchronous,blinker,Python,Multithreading,Python 2.7,Asynchronous,Blinker,我有一个树莓圆周率,我已经连接了一个4键键盘。使用blinker的信号,我把它连接起来运行一些方法 #sender while True: if buttonIsDown == True: signal.send() #reciever @signal.connect def sayHI(): print("1") time.sleep(10) print("2") 这很好,但是当我第二次按下按钮时(在上一次按下按钮的10秒内),它不会触发该方法,因为线程在时
#sender
while True:
if buttonIsDown == True: signal.send()
#reciever
@signal.connect
def sayHI():
print("1")
time.sleep(10)
print("2")
这很好,但是当我第二次按下按钮时(在上一次按下按钮的10秒内),它不会触发该方法,因为线程在时间内暂停。sleep(10)
如何让它在仍然暂停(可能在另一个线程中)的情况下再次启动该方法这是一个老问题,但它可能对其他人有用 您可以在每次发出信号时启动一个新线程,这样您就可以在所有事件发生时立即捕获它们。请记住,在您的代码中,由于您有一个
,而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
您能指出decorator
@signal.connect的文档(或您的实现)吗?因为我只找到了@signal.connect\u的文档,它在“通过信号发送和接收数据”的示例中提到