【问题标题】:Python: Accept input while waiting [duplicate]Python:等待时接受输入[重复]
【发布时间】:2015-11-24 00:00:58
【问题描述】:

我编写了一个小脚本,每 5 分钟执行一次任务(这并不一定要准确),但由于它是目前编写的,唯一可以取消的方法是使用 Ctrl+Z(Linux 终端)并且如果不重新启动脚本,就无法更改它执行的任务集。

因此,我想更改脚本以便能够接受用户输入等待进行下一次运行,而不会大量中断 5 分钟计时器(如杀死脚本和当前重新启动),但我不知道如何让raw input 只接受给定时间的值等。当前代码也是用 Python 2.7 编写的,但我很高兴转换为3 如果这使解决方案更容易。

当前代码如下所示:

# Setup for the tasks
while(True):
    # Do the tasks
    for i in range(5):
        print "Next run in " + str(5-i) + " mins"
        time.sleep(60)

有什么想法吗?

更新:这个问题没有导致发布特定的代码解决方案,所以这里有一个指向 a later question 的链接,它有一个我实施的解决方案的简单版本(以及它需要它工作的一个简单的编辑在答案中)/

【问题讨论】:

  • 您使用的是无限循环,因此使用 ctrl+z 退出很明显,不是吗?你能澄清一下你的问题吗?
  • @ThomasLee 谢谢,我之前似乎找不到任何东西,但您链接到的解决方案应该可以工作。
  • @AhsanulHaque 并非如此,让程序在给定的用户输入(例如在空白行上按 Enter)优雅地退出比强制终止进程要好得多。此外,我希望能够在wait 期间输入输入,以更改脚本在每次迭代中执行的任务集,正如我在问题中提到的那样。
  • 注意:Bash 中的 Ctrl-Z 不会杀死进程 - 它会挂起它并将其发送到后台。您可以使用jobs 命令查看当前暂停的作业列表,并使用fg job_spec 恢复暂停作业的执行;如果只有一个当前暂停的作业,您可以省略 job_spec 编号。在 Bash shell 中键入 help jobshelp bghelp bg 以获取更多信息。
  • @PM2Ring 是的,我只是不假思索地快速打字。不过,准确点很好,所以感谢您的更正。

标签: python input timer wait


【解决方案1】:

我想你想要这样的东西。

import threading

def takeInput():
    """This function will be executed via thread"""
    value = raw_input("what you want:")
    return

#initialize how you want
value = 0 
t = threading.Thread(target=takeInput)
t.start()
time.sleep(5) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多