Python 带闪烁器的异步/多线程

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秒内),它不会触发该方法,因为线程在时

我有一个树莓圆周率,我已经连接了一个4键键盘。使用blinker的信号,我把它连接起来运行一些方法

#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的文档,它在“通过信号发送和接收数据”的示例中提到