我几乎解决了这个问题,但我认为我需要朝着正确的方向轻推。
我想每五秒做一次,直到经过一定时间或用户中断它(在这种情况下,它在完成之前完成循环的迭代)。
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()
将阻塞,直到用户点击输入线程是否完成其工作。是否有另一个模块可以满足我的要求?
编辑:我使用的是 Windows XP。