我尝试使用多线程来限制用户的输入时间,但是这段代码似乎不起作用。
# giving the user less than 5 seconds to enter a number
import time
from threading import Thread
def ask():
start_time = time.time()
a = float(input("Enter a number:\n"))
time.sleep(0.001)
def timing():
if time.time() - start_time > 5:
print("Time's Up")
quit()
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()
答案 0 :(得分:0)
您需要将计时功能置于无限模式。 Bcz它只运行一次。
尝试以下代码:
import time
import os
from threading import Thread
start_time = time.time()
a = None
def ask():
global start_time
start_time = time.time()
global a
a = float(input("Enter a number:\n"))
time.sleep(0.001)
def timing():
while True:
global a
if a is not None:
break
if time.time() - start_time > 5:
print("Time's Up")
os._exit(1)
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()
答案 1 :(得分:0)
我不喜欢全局变量,但是以下代码似乎可以很好地满足您的需求:
import time
from threading import Thread
import sys
start_time = 0
timeUp = False
def ask():
global start_time, timeUp
start_time = time.time()
a = float(input("Enter a number:\n"))
time.sleep(0.001)
if a and (not timeUp):
print('This is a: ', a)
def timing():
global timeUp
while True:
if time.time() - start_time > 5:
print("Time's Up")
timeUp = True
sys.exit()
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()