Skip to content
Snippets Groups Projects
Commit 09c0f028 authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

added TerminableThread

parent a7ebb57e
No related branches found
No related tags found
No related merge requests found
# v2.1.12 # v2.1.12
* _TBA_ * added [TerminableThread](satella/coding/concurrent/thread.py)
# v2.1.11 # v2.1.11
......
...@@ -12,3 +12,9 @@ LockedDataset ...@@ -12,3 +12,9 @@ LockedDataset
.. autoclass:: satella.coding.concurrent.LockedDataset .. autoclass:: satella.coding.concurrent.LockedDataset
:members: :members:
TerminableThread
----------------
.. autoclass:: satella.coding.concurrent.TerminableThread
:members:
# coding=UTF-8 # coding=UTF-8
__version__ = '2.1.12a1' __version__ = '2.1.12rc1'
from .callablegroup import * from .callablegroup import *
from .monitor import * from .monitor import *
from .thread import TerminableThread
from .locked_dataset import LockedDataset from .locked_dataset import LockedDataset
__all__ = ['LockedDataset', 'Monitor', 'RMonitor', 'CallableGroup'] __all__ = ['LockedDataset', 'Monitor', 'RMonitor', 'CallableGroup', 'TerminableThread']
from threading import Thread
class TerminableThread(Thread):
"""
Class that will execute something in a loop unless terminated. Use like:
>>> class MeGrimlock(TerminableThread):
>>> def loop(self):
>>> ... do your operations ..
>>> a = MeGrimlock()
>>> a.start()
>>> a.terminate().join()
Flag whether to terminate is stored in self._terminating
"""
def __init__(self):
super().__init__()
self._terminating = False
def loop(self) -> None:
pass
def run(self) -> None:
while not self._terminating:
self.loop()
def terminate(self) -> 'TerminableThread':
self._terminating = True
return self
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment