在未收到用户输入时执行某些操作

时间:2014-10-10 20:47:19

标签: python loops input

在Python中,当用户没有给出输入时,我可以用循环方式做什么。 我有python客户端,我要求用户输入,但是当用户没有给出输入时,我希望每五秒钟继续提供更新。

我无法使用

 while (raw_input==""):
      update()

因为如果输入是"",则表示用户已输入内容(按回车键);

有办法吗?

更新:

我仍然无法为我工作。我尝试了下面的方法,也尝试了类似于这个线程的东西:waiting for user input in separate thread。我还尝试将update()方法传递给应该在后台运行的线程。但是任何使用raw_input()的东西都会让它等待输入:

 import threading
 import time

def update():
   while True:
      time.sleep(5)
      print "update"+'\n'

mythread = threading.Thread(target=update, args=())
mythread.daemon = True
mythread.start()

while True:
   usrin=raw_input()
   print "you typed: "+usrin

每次用户输入内容时,都会进行更新,然后返回usrin。如果这是我想要的,我可以轻松地将update()放入最后一个while循环中。

如果我只是使用update方法启动此线程并且在程序中不执行任何操作(废弃最后一次while循环),那么在shell中,每隔五秒更新一次,我仍然可以使用shell(即类型3 + 5)它给了我8)。我想在程序中发生类似的事情,当用户处于非活动状态更新时,如果他输入反应并返回更新。

注意:另外,我目前正在使用python 2.7.8,切换版本会有帮助吗?

1 个答案:

答案 0 :(得分:1)

也许这可以让你开始:

from threading import Thread
from time import sleep

result = None

def update_every_second():
    while result is None:
        sleep(1)
        print "update"

t = Thread(target=update_every_second)
t.start()
result = raw_input('? ')

print "The user typed", result