doFolder.hashing.executor module¶
Executor module providing progress-aware thread pool execution capabilities.
This module implements a thread pool executor with built-in progress tracking functionality. It includes progress controllers, future wrappers, and utility functions for managing asynchronous tasks with progress reporting.
- class doFolder.hashing.executor.FutureCanSync(runningFrom: Callable[[], bool] | None = None)¶
Bases:
Future[_T]Future that supports custom running state checking.
Extends the standard Future to allow custom logic for determining if the future is currently running.
- running() bool¶
Check if the future is currently running.
- Returns:
True if the future is running, False otherwise.
- runningFrom: Callable[[], bool] | None = None¶
- class doFolder.hashing.executor.FutureWithProgress(*args, **kwargs)¶
Bases:
FutureCanSync[_T],ProgressControllerA Future that can report progress.
Combines the functionality of a Future with progress tracking capabilities. This allows asynchronous operations to report their progress while maintaining the standard Future interface.
- statue: TaskStatus = 'waiting'¶
- updateProgress(*args, **kwargs)¶
Update the progress value and optionally the total.
Notifies all registered listeners after updating the values.
- Parameters:
progress (int, optional) – The new progress value.
total (int, optional) – The new total value. If None, keeps current total.
add (int, optional) – The amount to add to the current progress. If None, keeps current progress.
- class doFolder.hashing.executor.ProgressController¶
Bases:
objectA controller for tracking and reporting progress of operations.
This class manages progress state and notifies listeners when progress changes. It maintains a current progress value and total, and can synchronize with other progress controllers.
- _progress¶
Current progress value.
- Type:
int
- _total¶
Total value for the operation.
- Type:
int
- _listener¶
List of registered progress listeners.
- Type:
List[ProgressListener]
- addProgressListener(listener: Callable[[int, int, ProgressController], None]) Callable[[], None]¶
Add a listener that will be called with the current progress.
The listener is immediately called with the current progress state.
- Parameters:
listener (ProgressListener) – Function to call when progress updates. Takes (progress, total, controller) as parameters.
- Returns:
Function to remove the listener when called.
- Return type:
Callable[[], None]
- historyTime: float = 3.0¶
- property percent: float¶
Calculate completion percentage.
- Returns:
Completion percentage as float (0.0 to 100.0).
- property progress: int¶
Get current progress value.
- Returns:
Current progress as integer.
- property remain¶
Calculate estimated remaining time based on current speed.
- Returns:
Estimated remaining time in seconds, or None if speed unavailable.
- property speed¶
Calculate current processing speed based on history.
- Returns:
Current speed in units per second, or None if insufficient data.
- syncFrom(target: ProgressController)¶
Synchronize this controller’s progress with another controller.
Sets up a listener on the target controller that will update this controller’s progress whenever the target’s progress changes.
- Parameters:
target (ProgressController) – The controller to synchronize from.
- Returns:
Function to stop the synchronization.
- Return type:
Callable[[], None]
- property total: int¶
Get total progress target value.
- Returns:
Total progress target as integer.
- updateProgress(progress: int | None = None, *, total: int | None = None, add: int | None = None)¶
Update the progress value and optionally the total.
Notifies all registered listeners after updating the values.
- Parameters:
progress (int, optional) – The new progress value.
total (int, optional) – The new total value. If None, keeps current total.
add (int, optional) – The amount to add to the current progress. If None, keeps current progress.
- class doFolder.hashing.executor.ThreadPoolExecutorWithProgress(max_workers=None, thread_name_prefix='', initializer=None, initargs=(), **ctxkwargs)¶
Bases:
ThreadPoolExecutorA thread pool executor that reports progress.
Extends the standard ThreadPoolExecutor to automatically provide progress tracking for submitted tasks. Each submitted task receives a ProgressController and returns a FutureWithProgress that can report progress updates.
- submit(fn, /, *args, **kwargs) FutureWithProgress¶
Submit a callable to be executed with the given arguments.
The callable will receive a ‘progressControler’ keyword argument that can be used to report progress during execution.
- Parameters:
fn – The callable to be executed.
*args – Positional arguments to pass to the callable.
**kwargs – Keyword arguments to pass to the callable.
- Returns:
- A Future that can report progress and will
resolve with the result of the callable.
- Return type:
- doFolder.hashing.executor.futureMap(target: ~concurrent.futures._base.Future[~doFolder.hashing.executor._T], creater: ~collections.abc.Callable[[...], ~doFolder.hashing.executor._P] = <class 'doFolder.hashing.executor.FutureCanSync'>)¶
Map a Future to a new Future using a creator function.
Creates a new Future that will be resolved with the same result or exception as the target Future. This is useful for wrapping Futures with additional functionality.
- Parameters:
target (Future[_T]) – The source Future to map from.
creater (Callable[[], _P]) – Function that creates the new Future. Defaults to Future[_T].
- Returns:
The new Future created by the creater function.
- Return type:
_P