【问题标题】:How to carry on a program after certain time waited python [duplicate]如何在等待一段时间后进行程序python [重复]
【发布时间】:2018-03-20 23:31:40
【问题描述】:

我有这个代码:

while True:
    i=input'enter #enter or character:'
    if not i:
        break

如果他们输入enter,这会中断程序,但如果他们在 3 秒后没有回答,我希望它立即中断。

我该怎么做?

【问题讨论】:

    标签: python time


    【解决方案1】:

    Python 3 Timed Input(@mediocrity:如果你喜欢这个结果,也许你会投票给他的答案,因为他必须努力回答这个问题并且值得称赞)展示了你正在寻找的一个很好的例子。

    我在这里为你复制了它:

    import time
    from threading import Thread
    
    answer = None
    
    def check():
        time.sleep(3)
        if answer != None:
            return
        print "Too Slow"
    
    Thread(target = check).start()
    
    answer = raw_input("Input something: ")
    
    print(answer)
    
    print ("done")
    

    我认为这个答案和你的问题的细微差别你可以自己解决。

    希望对你有帮助

    编辑:我在这里发现了一些非常适合 Linux 的东西(我不知道它是否与 Windows 一起运行):http://www.garyrobinson.net/2009/10/non-blocking-raw_input-for-python.html

    我知道它还不是您需要的,但我仍然发布它,因为它可能对其他人有所帮助。这就是加里·罗宾逊所写的:

    2009 年 10 月 17 日 Python 的非阻塞 Raw_input [2010 年 8 月 30 日编辑,修正了函数名称中的拼写错误,并普遍改进了格式]

    我需要一种方法来允许 raw_input() 调用超时。如果它对任何人有用,我编写了这个在类 Unix 操作系统下工作的解决方案。

    import signal
    
    class AlarmException(Exception):
        pass
    
    def alarmHandler(signum, frame):
        raise AlarmException
    
    def nonBlockingRawInput(prompt='', timeout=20):
        signal.signal(signal.SIGALRM, alarmHandler)
        signal.alarm(timeout)
        try:
            text = raw_input(prompt)
            signal.alarm(0)
            return text
        except AlarmException:
            print '\nPrompt timeout. Continuing...'
        signal.signal(signal.SIGALRM, signal.SIG_IGN)
        return ''
    
    ans = None
    ans = nonBlockingRawInput("Input Something: ", 3)
    
    print ans
    

    【讨论】:

    • 谢谢你,这很好,但是我希望你能在时间到时绕过输入,或者换句话说,在 3 秒后程序会直接说'too慢'。有什么建议吗??
    • 你用的是windows还是linux?
    • 我用的是windows
    • 你可以试一试,但我不能用 Windows 测试它
    • 是的,抱歉它在 Windows 上不起作用(或至少我的)
    猜你喜欢
    • 2020-07-16
    • 2019-01-15
    • 2022-07-23
    • 2018-01-30
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多