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 サイクルの浪費を避けるためです。