__init__

SafeLoopThread.__init__(*args, default_stop=False, default_pause=False, **kwargs)[source]

This is a simple loop thread class which uses StopperThread to allow an application to signal to the thread that it should shutdown or temporarily pause the loop.

Note that if you have a long loop which takes a long time to run, you should regularly check should_stop and should_pause within your loop, so that the loop can shutdown or pause quickly when you request it to.

Example usage:

>>> # Create a sub-class of SafeLoopThread, and implement a loop() method
>>> class MyThread(SafeLoopThread):
...     loop_sleep = 2    # 'run' will wait this many seconds between each run of your loop(). set to 0 to disable loop sleeps
...     def loop(self):
...         print("I'm looping!")
...
>>> t = MyThread(default_pause=True)
>>> t.start()
>>> # No output because default_pause was set to True. To start the loop, we'll unpause it
>>> t.emit_unpause()
I'm looping!
I'm looping!
I'm looping!
>>> t.emit_pause()
>>> # We can re-pause the loop from our main thread, and the output stops again.
>>> # If we unpause the thread again, we can also ask the thread to stop looping and shutdown using emit_stop
>>> t.emit_unpause()
I'm looping!
I'm looping!
>>> t.emit_stop()
>>> t.is_alive()
False
>>> # Because we sent a STOP event, 'run' stopped looping, and returned.
>>> # To be able to start the same thread object again, we'd need to clear the STOP event first
>>> t.emit_start()  # Clear the STOP event we set with emit_stop
>>> t.start()       # Start the thread again
I'm looping!
I'm looping!
Parameters
  • args

  • default_stop – If True, will trigger the event ev_stop in the constructor, which will prevent the thread from being able to start until ev_stop is cleared e.g. via emit_start()

  • default_pause – If True, will trigger the event ev_pause in the constructor, which will cause ‘run’ to wait until ev_pause is cleared e.g. via emit_unpause() before starting the loop

  • kwargs

Key List[Union[Event,BetterEvent]] stop_events

Additional Event or BetterEvent ‘s which when set, will cause should_stop to become True.

Key List[Union[Event,BetterEvent]] pause_events

Additional Event or BetterEvent ‘s which when set, will cause should_pause to become True.