Source code for aplex.thread
"""Inherits base classes in executor.py for threading."""
import threading
import queue
from .executor import (BaseAsyncPoolExecutor, BaseWorkerManager,
BaseWorkerMixin, ResultItem)
__all__ = ['ThreadAsyncPoolExecutor']
class _ThreadWorker(BaseWorkerMixin, threading.Thread):
def __init__(self, *args, **kwargs):
self._submit_queue = queue.Queue()
super().__init__(*args, **kwargs)
class _ThreadWorkerManager(BaseWorkerManager):
_Worker = _ThreadWorker
def __init__(self, *args, **kwargs):
self._result_queue = queue.Queue()
super().__init__(*args, **kwargs)
def wait_return_item(self) -> ResultItem:
return self._result_queue.get(block=True)
[docs]class ThreadAsyncPoolExecutor(BaseAsyncPoolExecutor):
_WorkerManager = _ThreadWorkerManager