Skip to content

liberalchang/liberprocess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

liberprocess - 强大的Python进程管理库

Python Version License Build Status

一个基于multiprocessing和psutil的综合性进程管理库,提供进程创建、管理、通信、监控等全方位功能。

主要特性

  • 🚀 进程生命周期管理 - 完整的进程创建、启动、停止、重启功能
  • 💬 多种进程间通信机制 - 队列、管道、共享内存等多种IPC方式
  • 📊 实时进程监控 - CPU、内存、IO等性能指标实时监控
  • 🎯 资源管理和限制 - 灵活的资源限制和告警机制
  • 🏊 进程池管理 - 高效的进程池实现,支持任务调度
  • 🔧 数据序列化和验证 - 多格式数据序列化和完整的数据验证
  • 📝 完整的日志记录 - 结构化日志记录和多种输出方式
  • 🔒 线程安全 - 所有组件都经过线程安全设计
  • 🌐 跨平台支持 - 支持Windows、Linux、macOS等主流操作系统
  • 📚 详细文档 - 包含multiprocessing和psutil集成指南的完整文档

安装

使用pip安装

pip install liberprocess

打包

# 打包
python setup.py sdist bdist_wheel

文档生成

# 生成文档
sphinx-build -b html docs docs/_build

从源码安装

git clone https://github.com/liberprocess/liberprocess.git
cd liberprocess
pip install -e .

安装可选依赖

# 安装开发依赖
pip install liberprocess[dev]

# 安装测试依赖
pip install liberprocess[test]

# 安装文档依赖
pip install liberprocess[docs]

# 安装所有可选依赖
pip install liberprocess[msgpack,yaml]

快速开始

基本进程管理

import liberprocess as lp

# 创建进程管理器
manager = lp.ProcessManager()

# 定义目标函数
def worker_function(name, count):
    for i in range(count):
        print(f"Worker {name}: {i}")
        time.sleep(1)

# 创建并启动进程
manager.create_process(
    target=worker_function,
    args=("worker1", 5),
    name="MyWorker"
)
manager.start()

# 等待进程完成
manager.join()

进程池使用

import liberprocess as lp

# 创建进程池
pool = lp.ProcessPool(processes=4)

# 提交任务
results = []
for i in range(10):
    result = pool.apply_async(worker_function, args=(f"task_{i}", 3))
    results.append(result)

# 获取结果
for result in results:
    result.get()

# 关闭进程池
pool.close()
pool.join()

进程间通信

import liberprocess as lp

# 队列通信
queue_comm = lp.create_queue_comm()
queue_comm.put("Hello from main process")
message = queue_comm.get()

# 管道通信
pipe_comm = lp.create_pipe_comm()
pipe_comm.send("Hello through pipe")
data = pipe_comm.recv()

# 管理器通信
manager_comm = lp.create_manager_comm()
shared_dict = manager_comm.create_dict()
shared_list = manager_comm.create_list()

进程监控

import liberprocess as lp

# 创建进程监控器
monitor = lp.create_monitor(monitoring_interval=1.0)

# 添加进程到监控
monitor.add_process(process_id)

# 设置监控回调
def on_process_event(event_type, process_id, data):
    print(f"Process {process_id}: {event_type} - {data}")

monitor.set_callback(on_process_event)

# 开始监控
monitor.start_monitoring()

性能收集

import liberprocess as lp

# 创建性能收集器
collector = lp.PerformanceCollector()

# 收集进程性能数据
performance_data = collector.collect_process_performance(process_id)
print(f"CPU使用率: {performance_data['cpu_percent']}%")
print(f"内存使用: {performance_data['memory_info']['rss']} bytes")

# 获取历史数据
history = collector.get_historical_data(process_id, hours=1)
stats = collector.get_statistics(process_id)

资源管理

import liberprocess as lp

# 创建资源管理器
resource_manager = lp.ResourceManager()

# 设置资源限制
resource_manager.set_cpu_limit(80.0)  # CPU使用率不超过80%
resource_manager.set_memory_limit(1024 * 1024 * 1024)  # 内存不超过1GB

# 设置告警回调
def on_resource_alert(alert_level, resource_type, current_value, limit_value):
    print(f"资源告警: {resource_type} {alert_level} - 当前: {current_value}, 限制: {limit_value}")

resource_manager.set_alert_callback(on_resource_alert)

# 开始监控
resource_manager.start_monitoring()

便捷函数

liberprocess提供了一系列便捷函数,简化常见操作:

import liberprocess as lp

# 快速创建进程
process_manager = lp.create_process(
    target=my_function,
    args=(arg1, arg2),
    name="MyProcess"
)

# 快速创建进程池
pool = lp.create_process_pool(processes=4)

# 快速创建通信对象
queue_comm = lp.create_queue_comm(maxsize=100)
pipe_comm = lp.create_pipe_comm(duplex=True)
manager_comm = lp.create_manager_comm()

# 快速创建监控器
monitor = lp.create_monitor(monitoring_interval=2.0)

# 快速创建日志记录器
logger = lp.create_logger(name="MyApp", level="DEBUG")

# 获取系统信息
system_info = lp.get_system_info()
process_info = lp.get_process_info(pid=1234)

配置管理

import liberprocess as lp

# 设置全局配置
lp.Config.set_debug_mode(True)
lp.Config.set_default_log_level("DEBUG")

# 获取当前配置
config = lp.Config.get_config()
print(config)

日志记录

import liberprocess as lp

# 创建日志记录器
logger = lp.Logger(
    name="MyApp",
    level="INFO",
    console_output=True,
    file_output=True,
    log_file="app.log"
)

# 记录日志
logger.info("应用程序启动")
logger.warning("这是一个警告")
logger.error("发生错误")

# 使用便捷方法
logger.log_with_context("INFO", "处理任务", {"task_id": 123, "user": "admin"})

数据验证

import liberprocess as lp

# 创建数据验证器
validator = lp.DataValidator()

# 定义验证规则
rules = {
    "name": {"required": True, "type": str, "min_length": 2},
    "age": {"required": True, "type": int, "min_value": 0, "max_value": 150},
    "email": {"required": False, "type": str, "pattern": "email"}
}

# 验证数据
data = {"name": "张三", "age": 25, "email": "zhangsan@example.com"}
is_valid, errors = validator.validate(data, rules)

if is_valid:
    print("数据验证通过")
else:
    print(f"验证失败: {errors}")

数据序列化

import liberprocess as lp

# 创建序列化器
serializer = lp.DataSerializer()

# 序列化数据
data = {"name": "测试", "values": [1, 2, 3], "timestamp": datetime.now()}
serialized = serializer.serialize(data, format="json")

# 反序列化数据
deserialized = serializer.deserialize(serialized, format="json")

# 压缩序列化
compressed = serializer.serialize_compressed(data, format="json", compression="gzip")
decompressed = serializer.deserialize_compressed(compressed, format="json", compression="gzip")

架构设计

liberprocess采用模块化设计,主要包含以下模块:

liberprocess/
├── core/                 # 核心进程管理模块
│   ├── process_manager.py    # 进程管理器
│   ├── process_creator.py    # 进程创建器
│   └── process_pool.py       # 进程池
├── communication/        # 进程间通信模块
│   ├── queue_comm.py         # 队列通信
│   ├── pipe_comm.py          # 管道通信
│   └── manager_comm.py       # 管理器通信
├── monitoring/          # 监控模块
│   ├── process_monitor.py    # 进程监控
│   ├── performance_collector.py  # 性能收集
│   └── resource_manager.py   # 资源管理
└── utils/               # 工具模块
    ├── logger.py             # 日志记录
    ├── validator.py          # 数据验证
    └── serializer.py         # 数据序列化

性能特点

  • 高效的进程管理: 基于multiprocessing的高性能进程管理
  • 低开销监控: 优化的监控算法,最小化性能影响
  • 内存友好: 智能的内存管理和数据清理机制
  • 可扩展性: 支持大规模进程管理和监控
  • 稳定性: 完善的错误处理和恢复机制

系统要求

  • Python 3.7+
  • psutil 5.8.0+
  • 支持的操作系统:Windows、Linux、macOS

贡献指南

我们欢迎社区贡献!请查看 CONTRIBUTING.md 了解如何参与项目开发。

开发环境设置

# 克隆仓库
git clone https://github.com/liberalchang/liberprocess.git
cd liberprocess

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/macOS
#
venv\Scripts\activate  # Windows

# 安装开发依赖
pip install -e .[dev]

# 运行测试
pytest

# 代码格式化
black liberprocess/

# 类型检查
mypy liberprocess/

许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

更新日志

v1.0.0 (2024-01-01)

  • 🎉 首次发布
  • ✨ 完整的进程管理功能
  • ✨ 多种进程间通信机制
  • ✨ 实时监控和性能收集
  • ✨ 资源管理和限制
  • ✨ 数据验证和序列化
  • ✨ 完整的日志记录
  • 📚 完善的文档和示例

文档

liberprocess 提供了完整的文档,包括:

新增内容

multiprocessing和psutil集成指南 包含:

  • multiprocessing基础概念和使用方法
  • psutil系统监控功能详解
  • liberprocess与两个库的集成应用示例
  • 高性能数据处理系统实现
  • 实时系统监控解决方案
  • 常见问题解答和性能优化建议

支持

致谢

感谢所有为本项目做出贡献的开发者和用户!


liberprocess - 让进程管理变得简单而强大!

About

基于psutil、multiprocessing封装的进程管理类

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages