[英]How can I stop the 'input()' function after a certain amount of time?
我想弄清楚如何让 python 在一定时间后停止接受输入。
到目前为止,我所做的一切都有效,但在用户按下 Enter 之前不会停止程序。 如果重要,我将在 Anaconda 提示符下运行此文件。
#I've made everything short so it's simpler
def f():
try:
if a != "Accepted word":
timer.cancel
print("...")
quit()
except NameError:
#This makes the code run anyway since if the user inputs nothing
#'a' will still be undefined and python will still be waiting for an input
timer.cancel
print("...")
if a == "":
quit()
#Like I said, Python won't actually stop until an input is made
else:
#This runs fine if the user inputs the 'accepted word'
timer.cancel
print(...)
quit()
timer = threading.Timer(5.0, f)
timer.start()
a = input(">")
换句话说,我想做一些事情,让 Python 停止等待输入。 如果用户在计时器结束之前输入任何内容,程序运行良好,这很好,除非玩家什么都不输入。 如果他们甚至不按 Enter,那么整个过程就会停止。 (我也是 Python 的绝对初学者。事实上,仅仅学习如何制作计时器和使用 time.sleep function 就花了我几个小时)(顺便说一句,这也是我的知识范围)
您可以为此使用多线程。
from threading import Thread
import time
import os
answer = None
def ask():
global start_time, answer
start_time = time.time()
answer = input("Enter a number:\n")
time.sleep(0.001)
def timing():
time_limit = 5
while True:
time_taken = time.time() - start_time
if answer is not None:
print(f"You took {time_taken} seconds to enter a number.")
os._exit(1)
if time_taken > time_limit:
print("Time's up !!! \n"
f"You took {time_taken} seconds.")
os._exit(1)
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
只需在另一个进程中输入,并在一段时间后终止该进程。
import time, multiprocessing
def takeinput():
stdin = open(0)
print("give it up:", end = "", flush = 1)
x = stdin.readline()
print(x)
if __name__ == "__main__":
process = multiprocessing.Process(target = takeinput)
process.start()
time.sleep(5)
process.terminate()
process.join()
print("\nalright, times up!")
希望这有帮助:D
只需使用time.sleep()
sleep 方法会导致 python 程序冻结一定时间(以毫秒为单位)。 所以,如果你想停止input()
一段时间,那么你可以这样做,
from time import sleep
sleep(1000) #stops the program for 1 seconds
s = input()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.