如果您的 simThread 看起来像这样:
class simThread(threading.Thread):
def run(self):
while True:
modifyGraph()
您可以像这样引入要取消暂停的事件:
class simThread(threading.Thread):
def __init__(self):
self.unpaused = threading.Event()
self.unpaused.set()
threading.Thread.__init__(self)
def run(self):
while True:
modifyGraph()
unpaused.wait()
您将像这样使用此功能:
thread = simThread()
thread.start()
thread.unpaused.clear()
[...]
thread.unpaused.set()
如果您认为调用的事件unpaused
有点尴尬,您还可以添加一个pause
最初设置为的附加布尔变量False
。在线程中,您将检查它是否存在True
,然后等待取消暂停事件。所以是这样的:
class simThread(threading.Thread):
def __init__(self):
self.pause = False
self.unpause = threading.Event()
threading.Thread.__init__(self)
def run(self):
while True:
modifyGraph()
if self.pause:
unpause.wait()
def pause(self):
self.unpause.clear()
self.pause = True
def unpause(self):
self.pause = False
self.unpause.set()
thread = simThread()
thread.start()
thread.pause()
thread.unpause()
你应该使用一个事件而不是让另一个 while 循环旋转的self.pause
原因是为了避免浪费 CPU 周期。