gpt4 book ai didi

python - 带信号灯的异步/多线程

转载 作者:行者123 更新时间:2023-12-03 12:59:25 25 4
gpt4 key购买 nike

我有一个树莓派,我已经连接了一个 4 键键盘。使用 blinker 的信号,我将其连接起来以运行一些方法。

#sender
while True:
if buttonIsDown == True: signal.send()

#reciever
@signal.connect
def sayHI():
print("1")
time.sleep(10)
print("2")

这工作正常,但是当我第二次按下按钮时(在上一次按下按钮后 10 秒内)它不会触发该方法,因为线程在 time.sleep(10)

我怎样才能让它在它仍然暂停时再次触发该方法(可能在另一个线程中)

最佳答案

这是一个老问题,但它可能对其他人有用。

您可以在每次发出信号时启动一个新线程,这样您就可以在所有事件发生时立即捕获它们。请记住,在您的代码中,由于您有一个 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

关于python - 带信号灯的异步/多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com