首页
常用工具
学习笔记
行动起来,活在当下
累计撰写
9
篇文章
累计创建
2
个标签
累计收到
0
条评论
栏目
目 录
CONTENT
以下是
Python
相关的文章
2026-04-01
Pymem 使用笔记:用 Python 操作 Windows 进程内存
该文章主要介绍了Windows进程相关工具Pymem的基本用法和实际踩坑的经验。Pymem是一个Python库,封装了Windows底层API,允许用户在没有调用原生API的情况下直接操作其他进程的内存。 文章中提到了Pymem的常见使用场景,如内存分析、逆向工程、进程调试和游戏辅助研究。它还提供了一些基本的示例代码,展示了如何附加到进程、枚举模块与定位基址、读取内存数据以及写入内存数据。 文章中提到了几点注意事项,包括权限问题、地址有效性、64位 vs 32位指针差异和编码问题。这些注意事项需要在使用Pymem时考虑,以避免由于错误导致的程序崩溃或其他问题。 总的来说,Pymem是一个非常有用的工具,对于进行Windows进程相关研究和开发是非常有用的。通过了解它的基本用法和实际踩坑的经验,可以更好地利用其功能。
2026-04-01
5
0
0
Python
2026-03-30
Python deepdiff 使用笔记
这是一份关于Python的深度比较库(DeepDiff)的文档。它提供了一种高效的方法来对比两个或多个对象的差异,包括它们的属性值、结构和内容。 **深度比较的基本概念** * **DeepDiff**: 这是最主要的类别,用于对比两个或多个对象。 * 通过 `DeepDiff` 对象,可以获得对象之间的差异,包括它们的属性值、结构和内容。 **使用 DeepDiff 的示例** ```python from deepdiff import DeepDiff # 创建两个对象 data1 = { "x": 1, "y": [1, 2], "z": {"a": 3, "b": 4} } data2 = { "x": 2, "y": [1, 3], "z": {"a": 5, "c": 6} } # 使用 DeepDiff 对象对比两个对象 diff = DeepDiff(data1, data2) print(diff) ``` **输出** ```json { 'identical': [ 'root' ], 'not_identical': [ { 'keyPath': 'x', 'newValuePath': 'data2["x"]', 'value': 2, 'old_value_path': 'data1["x"]', 'old_value': 1 }, { 'keyPath': 'y', 'newValuePath': 'data2["y"]', 'value': [1, 3], 'old_value_path': 'data1["y"]', 'old_value': [1, 2] }, { 'keyPath': 'z', 'newValuePath': 'data2["z"]', 'value': {'a': 5, 'c': 6}, 'old_value_path': 'data1["z"]', 'old_value': {'a': 3, 'b': 4} } ] } ``` **输出解释** * `identical`: 对比时没有出现差异的路径。 * `not_identical`: 对比时出现差异的路径,包括新值、旧值和它们之间的变化。 **其他方法** DeepDiff 还提供以下方法: * `DenseDiff`: 可用于比较 dense 的数据结构(如 dict、list 等),它会优化对比过程以减少计算量。 * `compute_diff`: 通过指定两个对象并选项参数,可以直接计算出差异。 * `DeepHash`: 可用于计算 object 的 hash 值,用于快速判断两个 object 是否完全相同。 **性能优化建议** * 使用 `max_depth` 来限制递归深度,避免深层递归消耗过多内存。 * 在使用 `ignore_order=True` 时设置相似度阈值来控制列表元素匹配策略,避免 O(n²) 的全量配对。 **参考资料** DeepDiff 的文档可以在 [ZepWorks](https://zepworks.com/deepdiff/current/) 或 [PyPI](https://pypi.org/project/deepdiff/) 仓库中找到。
2026-03-30
12
0
0
Python
2025-11-22
在 Python 中使用 XXL-JOB 执行器的完整指南
该文档介绍了pyxxl的使用指南,包括创建任务、任务参数、Prometheus监控、开发与调试等内容。以下是该文档的关键点: 1. **创建任务**:使用`@app.register()`定义任务函数,传入任务ID和其他必要信息。 2. **任务参数**:在任务函数中通过`g.job_id`和`g.param`获取任务ID和参数。 3. **Prometheus监控**:安装`metrics`扩展后,执行器会自动暴露Prometheus格式的指标。 4. **开发与调试**:项目提供了一键启动开发环境的脚本(依赖Docker),包括启动XXL-JOB调度中心、安装依赖和启动示例执行器。 文档还提到了以下兼容性和已知问题: * **兼容性**:支持Python 3.9+,XXL-JOB版本2.2.0、2.3.0、2.4.0、3.3.2。 * **已知问题**:XXL-JOB界面显示的任务执行时间为回调时间,而非实际开始时间;实时日志拉取进度显示异常,刷新页面后可查看完整日志。 文档提供了以下参考资料: * pyxxlGitHub仓库 * pyxxl官方文档 * XXL-JOB官方仓库
2025-11-22
4
0
0
Python
2025-09-22
将 Python 标准库 logging 重定向到 Loguru
以下是文章摘要: 本文介绍如何通过一个拦截处理器(InterceptHandler),将所有标准库 logging 的日志流量统一重定向到 Loguru,实现全局日志一致性。首先需要安装 Loguru,并在项目入口处调用setup_logging()函数即可实现。该方法包括以下步骤: 1. 依赖安装:使用 pip 安装 Loguru 或 uv add loguru。 2. 核心原理:标准库 logging 支持自定义 Handler,创建 InterceptHandler,将日志记录转发给 Loguru 的 logger。 3. 代码实现:在 InterceptHandler中,通过映射logging级别到Loguru级别、追踪调用栈深度和异常信息,转发日志到 Loguru。 4. 使用示例:在项目入口处调用setup_logging()即可。 5. 与 FastAPI / Uvicorn 集成:FastAPI 和 Uvicorn 内部大量使用标准库 logging,通过上述方案可以将它们的日志也统一收归 Loguru 管理。 6. Loguru 输出到文件(可选):如果需要同时将日志写入文件,可在 setup_logging 中追加 Loguru 的 sink 配置。 注意事项: * 调用时机:setup_logging() 必须在所有第三方库导入之后、应用启动之前调用。 * propagate 设置:对于需要单独拦截的第三方库 logger,记得将 propagate 设为 False,避免日志被重复输出。 * level=0: logging.basicConfig(level=0) 表示接受所有级别,具体过滤由 Loguru 一侧负责。 * 多进程环境:在多进程(如 Gunicorn)场景下,每个子进程需独立初始化,建议在进程启动钩子中调用。 总结:通过实现 InterceptHandler 并替换 logging 的根 Handler,可以将整个项目(包括所有第三方库)的日志统一交由 Loguru 处理。这样既保持了与标准库 logging 的完全兼容,又享受到 Loguru 带来的彩色输出、异常追踪、文件轮转等现代化特性,是 Python 项目日志管理的最佳实践之一。
2025-09-22
38
0
0
Python