在一段时间内的循环
我在用Python编程。我有一个这样的while循环:
b=time.clock()
while time.clock()-b<3 :
input("input")
我想在3秒后结束这个while循环,即使用户还没有输入任何东西!我该怎么做呢?
补充:如果我用的是data=s.recv(1024)
,其中s是一个套接字,而不是input("input")
,那该怎么处理呢?
有没有一个通用的方法来解决这样的问题?
补充2:我使用的是Python 3。
2 个回答
0
你不能用 input
来实现这个功能。因为 input
会让程序停下来,等着用户输入东西;在这个等待的过程中,程序无法控制其他事情的发生。有一些方法可以让你自己触发信号(就像这里提到的那样),但这些方法比较复杂。
一般来说,在这种情况下,你应该使用 raw_input
,不过它也有同样的问题。如果你是在写一个需要和用户互动的正式程序,建议你使用一个真正的图形用户界面(GUI)框架,这样可以更简单地实现这些功能。
3
在用户输入时,input
会阻塞程序,所以你需要找一种异步的方法来触发超时事件(或者在用户输入时触发)。
幸运的是,这个SO的回答似乎正好提供了你需要的解决方案!
补充:如果你不是在使用Python 3,可能应该用 raw_input
来代替 input
。