【问题标题】:While loop for some timewhile 循环一段时间
【发布时间】:2011-06-20 19:36:23
【问题描述】:

我正在使用 Python 编程。我有这么一个while循环

b=time.clock()
while time.clock()-b<3 :
    input("input")

我想在 3 秒后结束 while 循环,即使用户还没有输入任何内容!我该怎么做?

编辑:如果我有 data=s.recv(1024),其中 s 是一个套接字,而不是 input("input"),会怎样?

这样的问题有通用的解决方案吗?

Edit2:我使用的是 Python 3。

【问题讨论】:

标签: python time python-3.x while-loop clock


【解决方案1】:

input 阻止用户输入,因此您必须实现一些异步方式来触发超时事件(或触发用户输入)

幸运的是,this SO answer 似乎正好有这个东西!

编辑:如果您不使用 Python 3,您可能应该使用 raw_input 而不是 input

【讨论】:

  • 谢谢!如果我在等待消息 (s.recv(1024)) 会怎样?我也需要解决这个问题。
  • 如果您正在等待套接字,那么链接问题中的select 解决方案可能是您最好的选择:stackoverflow.com/questions/1335507/…
  • 再次感谢!这很有帮助。
【解决方案2】:

你不能,使用inputinput 阻塞等待用户输入;当它阻塞时,您对正在发生的事情没有任何编程控制。有一些方法可以自己触发信号(如here,正如其他地方所建议的那样),但这有点令人费解。

一般来说,您希望在这种情况下使用raw_input,尽管它会遇到同样的问题。如果您正在编写一个严肃的程序来与用户交互,那么您将需要使用真正的 GUI 框架,它允许您以更直接的方式完成这些事情。

【讨论】:

  • 谢谢!当我使用 Python 3 时,我想我必须使用输入。如果我在等待消息 (s.recv(1024)) 会怎样?
猜你喜欢
  • 2013-11-12
  • 2016-02-12
  • 2013-01-22
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
相关资源
最近更新 更多