【发布时间】:2019-04-09 14:03:52
【问题描述】:
我正在使用 Python 3,我想编写一个在一定时间内要求多个用户输入的程序。这是我的尝试:
from threading import Timer
##
def timeup():
global your_time
your_time = False
return your_time
##
timeout = 5
your_Time = True
t = Timer(timeout, timeup)
t.start()
##
while your_time == True:
input()
t.cancel()
print('Stop typing!')
问题是,即使时间到了,代码仍然在等待输入。我希望循环在时间用完时准确停止。我该怎么做呢?谢谢!
【问题讨论】:
-
由于答案被锁定,我将在这里回答...这将要求输入,并在 5 秒后自动关闭,说明计时器已结束。代码:import time import threading timer = 5 timeout = time.time() + 1 * timer def do_input(): while True: message = input("Message: ") def do_timer(): while time.time()
-
@Feitan Portor 这就是我开始在下面写答案的方式。问题在于,您的守护程序提示线程一直存在,直到整个过程结束。通常你会假设程序应该在超时发生之后继续做一些事情,然后你不希望提示线程继续接受进一步的输入。您的实现的一些具体可避免的问题是它在计时器内使用忙等待(添加一些
time.sleep以防止敲击 cpu )和exit()将在终端中工作,但在 IDE 控制台中不起作用(更改为sys.exit())跨度>
标签: python python-3.x multithreading python-multithreading