Python -что-то делать до нажатия клавиши или тайм-аута

Я почти решил эту проблему, но я думаю, что мне нужен толчок в правильном направлении.

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

import time
import threading

def do_something():
    T0 = time.clock()
    while (time.clock() - T0) < 60 and not e.isSet(): #as long as 60s haven't elapsed
                                                      #and the flag is not set
        #here do a bunch of stuff
        time.sleep(5)

thread = threading.Thread(target=do_something, args=())
thread.start()
e = threading.Event()

while thread.isAlive():
    #here I want the main thread to wait for a keypress and, if it receives it,
    #set the event e, which will cause the thread to finish its work.

Я не могу понять, как заставить работать последнюю строку. Использование raw_input()внутри цикла будет блокироваться до тех пор, пока пользователь не нажмет Enter, независимо от того, завершит ли поток свою работу или нет. Есть ли другой модуль, который будет делать то, что я хочу?

Изменить :Я использую Windows XP.

9
задан Benjamin Hodgson 1 August 2012 в 01:18
поделиться