Python:等待时接受输入

Python: Accept input while waiting

本问题已经有最佳答案,请猛点这里访问。

我有一个小脚本,我写了每5分钟执行一次任务(这不一定是准确的),但是因为它是当前写的唯一可以取消的方法是使用Ctrl + Z(linux终端)并且有无法在不重新启动脚本的情况下更改它执行的任务集。

因此,我想更改脚本以便能够接受用户输入,同时等待下一次运行而不会中断任何大量的5分钟计时器(因为杀死脚本并且当前重新启动),但是我无法弄清楚如何让raw input仅接受给定时间的值,等等。此外,当前代码是用Python 2.7编写的,但我很乐意转换为3,如果这使得解决方案更容易。

当前代码看起来像这样:

1
2
3
4
5
6
# 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)

有任何想法吗?

更新:这个问题没有导致特定的代码解决方案被发布,所以这里是一个链接到后来的问题,其中包含我实现的解决方案的简单版本(以及一个简单的编辑,它需要它在答案中工作)/


我想你想要那样的东西。

1
2
3
4
5
6
7
8
9
10
11
12
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)