当前位置: 首页 > 知识库问答 >
问题:

如何在一定时间后停止输入()函数?

卫博
2023-03-14

我试图找出如何使python停止接受输入后一定数量的时间。

到目前为止,我已经得到了工作,但不会停止程序,直到用户按下回车键。如果有关系,我在蟒蛇提示符中运行这个文件。

#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就不会再等待输入了。如果用户在计时器结束前输入了任何东西,程序运行正常,这很好,除非玩家什么也没输入。如果他们甚至不按回车键,那么整个过程就会停止。(我也是Python的绝对初学者。事实上,仅仅学习如何制作计时器和使用time.sleep功能就花了我几个小时)(顺便说一句,这也是我的知识范围)

共有2个答案

楚涵润
2023-03-14

只需使用time.sleep()Hibernate方法会使python程序冻结一定时间(以毫秒为单位)。所以,如果你想停止输入()一段时间,那么你可以这样做,

from time import sleep
sleep(1000) #stops the program for 1 seconds
s = input()

调味汁

钦楚青
2023-03-14

您可以为此使用多线程。

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()
 类似资料:
  • 问题内容: 停止在JTextField中键入后如何启动函数。并非每个关键版本。如果两个键的释放时间差大于1秒,则它将运行此功能。否则,请等待1秒钟。 问题答案: 使用Swing 和a 每次更新时,重置 看看如何使用Swing计时器和侦听文档中的更改以了解更多详细信息 作为一个简单的例子…

  • 我遇到了一个问题,试图在经过一定时间后立即停止一个线程,因为thread.stop和类似的其他线程已经折旧。 我试图停止的线程使用我的鼠标,我需要停止它,以便我可以用其他方式使用我的鼠标。 我在想的是下面的代码,它只是制作另一个线程来观察主线程已经运行了多长时间,如果它是活的,就停止它,但我无法完成这一点。

  • 我想在我停止在输入文本框中键入字符(而不是在键入字符时)后触发一个事件。 我尝试过: 但是这个例子为每个输入的字符产生一个超时,如果我输入20个字符,我会收到大约20个AJAX请求。 在这个小提琴上,我用一个简单的警报而不是AJAX来演示同样的问题。 有解决办法吗,还是我只是用了一个糟糕的方法?

  • 触发spring boot REST服务后,该服务可以正常运行数小时,所有请求都可以正常工作,没有任何问题。发生的是,一段时间后,它随机地停止了。在查看日志时,我没有发现任何错误,除了应用程序已被销毁的信息。 一段时间后的日志 Maven依赖项 对于为什么spring boot REST API可能会停止有什么想法吗?我的maven依赖关系是根据演示的--而且它正在成功运行--这就是为什么服务在随

  • null 所以我面临一个问题,如果打开,等待输入,如何停止它?我尝试过将它放在线程中并或使用作为标志,但它并没有停止

  • 我有一个场景,我需要停止kafka并调用一些函数在消费者停止后执行。同样,flow是这样的: 消费来自kafka主题的消息 将每个消耗的消息添加到文件中 停止kafka监听器,如果它在过去10秒内没有收到任何消息 为Ex调用一些函数:UploadFileToS3() 我在我的消费者方法中使用了spring kafka的@KafkaListener注释。 我知道停止使用@KafkaListener注