venv added, updated
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
from concurrent.futures import Future, ThreadPoolExecutor
|
||||
from typing import Any, Optional
|
||||
|
||||
from reactivex import abc, typing
|
||||
|
||||
from .newthreadscheduler import NewThreadScheduler
|
||||
|
||||
|
||||
class ThreadPoolScheduler(NewThreadScheduler):
|
||||
"""A scheduler that schedules work via the thread pool."""
|
||||
|
||||
class ThreadPoolThread(abc.StartableBase):
|
||||
"""Wraps a concurrent future as a thread."""
|
||||
|
||||
def __init__(
|
||||
self, executor: ThreadPoolExecutor, target: typing.StartableTarget
|
||||
):
|
||||
self.executor: ThreadPoolExecutor = executor
|
||||
self.target: typing.StartableTarget = target
|
||||
self.future: Optional["Future[Any]"] = None
|
||||
|
||||
def start(self) -> None:
|
||||
self.future = self.executor.submit(self.target)
|
||||
|
||||
def cancel(self) -> None:
|
||||
if self.future:
|
||||
self.future.cancel()
|
||||
|
||||
def __init__(self, max_workers: Optional[int] = None) -> None:
|
||||
self.executor: ThreadPoolExecutor = ThreadPoolExecutor(max_workers=max_workers)
|
||||
|
||||
def thread_factory(
|
||||
target: typing.StartableTarget,
|
||||
) -> ThreadPoolScheduler.ThreadPoolThread:
|
||||
return self.ThreadPoolThread(self.executor, target)
|
||||
|
||||
super().__init__(thread_factory)
|
||||
Reference in New Issue
Block a user