Хотя цикл в течение некоторого времени - PullRequest
0 голосов
/ 03 февраля 2011

Я программирую на Python. У меня такой цикл пока

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

Я хочу завершить цикл while ровно через 3 секунды, даже если пользователь еще ничего не ввел! Как я могу это сделать?

Редактировать: Что бы было, если бы у меня было data=s.recv(1024) где s - сокет, а не input("input")?

Есть ли общее решение такой проблемы?

Edit2: Я использую Python 3.

Ответы [ 2 ]

3 голосов
/ 03 февраля 2011

input блокирует пользовательский ввод, поэтому вам придется реализовать какой-то асинхронный способ инициирования события тайм-аута (или триггера на пользовательский ввод)

К счастью, этот ответ SO Похоже, что дело в этом!

edit : и если вы не используете Python 3, вам, вероятно, следует использовать raw_input вместо input

0 голосов
/ 03 февраля 2011

Вы не можете, используя input.input блокирует ожидание, когда пользователь что-то наберет;пока он блокируется, вы не имеете никакого программного контроля над тем, что происходит.Есть способы инициировать сигнал самостоятельно (как здесь , как это предлагается в другом месте), но это немного запутанно.

В общем, вы хотите использовать raw_input в этой ситуации, хотяэто страдает от той же проблемы.И если вы пишете серьезную программу для взаимодействия с пользователем, вам нужно использовать реальный графический интерфейс, который позволит вам делать эти вещи более простым способом.

...