gpt4 book ai didi

python - 在单独的线程中等待用户输入

转载 作者:太空狗 更新时间:2023-10-30 01:16:37 26 4
gpt4 key购买 nike

我正在尝试完成一种生成等待用户输入的线程的方法;如果 10 秒内没有输入,我希望脚本终止生成的线程并继续处理。如果输入文本,我有办法从线程取回输入,但我无法让超时终止新生成的线程。

下面的例子是我最接近的。我告诉新创建的线程它是一个守护进程,它会在主脚本退出时退出。我遇到的问题是线程将继续等待,直到脚本退出或用户输入某些内容。

shared_var = ['1']
def run(ref):
ref[0] = raw_input("enter something: ")
print "shared var changed to '%s'" % (ref[0])

thread = threading.Thread(target=run, args=(shared_var,))
thread.daemon = True
thread.start()
time.sleep(10) # simplified timeout

#Need some way to stop thread if no input has been entered
print "shared var = " + shared_var[0]

我知道突然杀死线程不是最好的方法(Related Link),但我不知道如何中断等待 raw_input 的新线程

最佳答案

看起来没有办法为用户输入计时。在 SmartElectron 提供的链接中,该解决方案不起作用,因为一旦请求 raw_input,计时器就会停止。

目前最好的解决方案是:

# Declare a mutable object so that it can be pass via reference
user_input = [None]

# spawn a new thread to wait for input
def get_user_input(user_input_ref):
user_input_ref[0] = raw_input("Give me some Information: ")

mythread = threading.Thread(target=get_user_input, args=(user_input,))
mythread.daemon = True
mythread.start()

for increment in range(1, 10):
time.sleep(1)
if user_input[0] is not None:
break

关于python - 在单独的线程中等待用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12078363/

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