47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
|
"""
|
||
|
PyBitmessage does various tasks in separate threads. Most of them inherit
|
||
|
from `.network.StoppableThread`. There are `addressGenerator` for
|
||
|
addresses generation, `objectProcessor` for processing the network objects
|
||
|
passed minimal validation, `singleCleaner` to periodically clean various
|
||
|
internal storages (like inventory and knownnodes) and do forced garbage
|
||
|
collection, `singleWorker` for doing PoW, `sqlThread` for querying sqlite
|
||
|
database.
|
||
|
|
||
|
There are also other threads in the `.network` package.
|
||
|
|
||
|
:func:`set_thread_name` is defined here for the threads that don't inherit from
|
||
|
:class:`.network.StoppableThread`
|
||
|
"""
|
||
|
|
||
|
import threading
|
||
|
|
||
|
try:
|
||
|
import prctl
|
||
|
except ImportError:
|
||
|
def set_thread_name(name):
|
||
|
"""Set a name for the thread for python internal use."""
|
||
|
threading.current_thread().name = name
|
||
|
else:
|
||
|
def set_thread_name(name):
|
||
|
"""Set the thread name for external use (visible from the OS)."""
|
||
|
prctl.set_name(name)
|
||
|
|
||
|
def _thread_name_hack(self):
|
||
|
set_thread_name(self.name)
|
||
|
threading.Thread.__bootstrap_original__(self)
|
||
|
# pylint: disable=protected-access
|
||
|
threading.Thread.__bootstrap_original__ = threading.Thread._Thread__bootstrap
|
||
|
threading.Thread._Thread__bootstrap = _thread_name_hack
|
||
|
|
||
|
from class_addressGenerator import addressGenerator
|
||
|
from class_objectProcessor import objectProcessor
|
||
|
from class_singleCleaner import singleCleaner
|
||
|
from class_singleWorker import singleWorker
|
||
|
from class_sqlThread import sqlThread
|
||
|
|
||
|
|
||
|
__all__ = [
|
||
|
"addressGenerator", "objectProcessor", "singleCleaner", "singleWorker",
|
||
|
"sqlThread"
|
||
|
]
|