在一段时间内的循环

0 投票
2 回答
2671 浏览
提问于 2025-04-16 11:10

我在用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

撰写回答