mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
feat(backend): migrate AgentExecutor from ProcessPoolExecutor to ThreadPoolExecutor (#10540)
## Summary - Migrate execution manager from ProcessPoolExecutor to ThreadPoolExecutor for improved performance and resource efficiency - Rename `Executor` class to `ExecutionProcessor` for better clarity - Convert classmethods to instance methods following proper OOP design patterns - Implement thread-local storage using `threading.local()` for thread-safe execution ## Technical Changes - **Executor Pattern**: Replace process-based execution with thread-based execution using `ThreadPoolExecutor` - **Thread-Local Storage**: Use `threading.local()` to bind `ExecutionProcessor` instances to worker threads - **Initialization**: Add `init_worker()` function called once per thread via `initializer` parameter - **Event Handling**: Replace `multiprocessing.Manager().Event()` with `threading.Event()` - **Tracking**: Update from PID to TID (`threading.get_ident()`) for thread identification - **Method Conversion**: Convert all classmethods to instance methods (`cls` → `self`) - **Signal Handling**: Remove signal handling code that doesn't work in worker threads ## Benefits - **Performance**: Reduced overhead compared to process creation/destruction - **Resource Efficiency**: Lower memory footprint and faster startup - **Simplicity**: Cleaner implementation using thread-local storage pattern - **Thread Safety**: Maintained through isolated ExecutionProcessor instances per thread ## Test Plan - [x] Code passes all linting and formatting - [x] All executor tests pass (23/23) - [x] Graph execution test passes successfully - [x] Thread-local storage implementation verified - [x] Signal handling compatibility fixed for worker threads 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in: