我目前正在使用 python (2.7) 编写一个有一些线程的 GUI。我遇到了一点,在获得一条信息之前我需要大约延迟一秒钟,但我不能让函数运行时间超过几毫秒。考虑到这一点,我正在尝试创建一个线程计时器,它将设置一个标志timer.doneFlag
并具有主要功能来继续戳看它是否完成。
这是工作。但并非总是如此。我遇到的问题是,有时我觉得 , 中的time.sleep
函数run
并没有完全等待一秒钟(有时甚至可能不会等待)。我所需要的只是我可以有一个标志,让我可以控制开始时间并在达到 1 秒时升起标志。
我可能做的太多只是为了得到一个线程化的延迟,如果你能提出一些建议,或者帮助我在下面的代码中找到一个错误,我将非常感激!
我附上了我使用的部分代码:
从主程序:
class dataCollection:
def __init__(self):
self.timer=Timer(5)
self.isTimerStarted=0
return
def StateFunction(self): #Try to finish the function within a few milliseconds
if self.isTimerStarted==0:
self.timer=Timer(1.0)
self.timer.start()
self.isTimerStarted=1
if self.timer.doneFlag:
self.timer.doneFlag=0
self.isTimerStarted=0
#and all the other code
import time
import threading
class Timer(threading.Thread):
def __init__(self, seconds):
self.runTime = seconds
self.doneFlag=0
threading.Thread.__init__(self)
def run(self):
time.sleep(self.runTime)
self.doneFlag=1
print "Buzzzz"
x=dataCollection()
while 1:
x.StateFunction()
time.sleep(0.1)