首页
文章列表
标签墙
返回找工具啦
Python
共 128 篇文章
Python concurrent.futures.ProcessPoolExecutor的进程复用机制
2026-04-30 04:28:05
Python concurrent.futures.ProcessPoolExecutor的进程复用机制 利用多进程进行并行计算时,频繁地创建和销毁进程会消耗大量系统资源,导致程序性能下降。concurrent.futures.ProcessPoolExecutor 通过维护一个固定数量的进程池,实
Python
多进程
进程池
69
0
Python contextlib.suppress忽略特定异常的简洁写法
2026-04-29 22:29:22
Python contextlib.suppress忽略特定异常的简洁写法 在编写 Python 代码时,经常会遇到“预计可能发生错误,但发生时并不需要处理,只需默默跳过”的场景。例如,尝试删除一个可能不存在的文件,或者从字典中获取一个可能缺失的键。如果不加处理,程序会因报错而中断;如果加上繁琐的
Python
异常处理
上下文管理器
67
0
Python __dict__与__slots__在属性存储上的内存差异
2026-04-29 20:24:36
Python dict与slots在属性存储上的内存差异 Python 作为一门动态语言,其灵活性允许我们在运行时随意给对象添加属性。这种便利性背后,是 Python 默认为每个对象维护的一个字典 dict。然而,当需要创建成千上万个对象时,这种默认机制会消耗大量内存。slots 是 Python
Python
__dict__
__slots__
64
0
Python __init__和__new__的区别:什么时候需要重写__new__
2026-04-29 19:23:41
Python 中 init 和 new 的区别常常让初学者感到困惑。简单来说,new 负责对象的创建(构造),而 init 负责对象的初始化。理解这两者的分工是掌握 Python 类机制的关键。 1. 理解对象创建的生命周期 在 Python 中,当你调用一个类(例如 MyClass)来实例化对象时
Python
面向对象
__init__
60
0
Python weakref.WeakKeyDictionary在缓存键对象回收时的行为
2026-04-29 16:22:32
Python weakref.WeakKeyDictionary在缓存键对象回收时的行为 1. WeakKeyDictionary基本概念 创建 weakref.WeakKeyDictionary 是Python标准库中提供的一种特殊字典,它使用弱引用来存储键。与普通字典不同,当键对象没有被其他引用
Python
弱引用
缓存
68
0
Python ExceptionGroup与except*处理多个并发异常
2026-04-29 14:24:29
Python ExceptionGroup与except处理多个并发异常 在编写涉及并发任务(如 asyncio)或批量处理的程序时,一个经典的痛点是:当多个任务同时失败时,程序只能捕获到第一个遇到的异常,后续的错误往往会被掩盖或丢失,导致调试困难。Python 3.11 引入了 Exception
Python
异常处理
ExceptionGroup
56
0
Python inspect模块动态获取函数签名与参数默认值
2026-04-29 07:13:46
Python inspect模块动态获取函数签名与参数默认值 Python 内置的 inspect 模块能够让我们在程序运行时“偷看”函数的内部结构,无需手动查阅源代码。这在编写装饰器、API 文档生成工具或动态调用函数时非常有用。 1. 准备一个演示用的目标函数 首先,我们需要一个包含多种参数类型
Python
inspect模块
函数签名
53
0
Python列表和元组的内存占用差异:为什么元组更省内存
2026-04-29 02:27:51
Python列表和元组的内存占用差异:为什么元组更省内存 Python 中的列表和元组在功能上非常相似,都用于存储数据的有序集合。然而,在底层内存管理上,两者存在本质区别。元组通常比列表占用更少的内存空间,这在处理大量数据或对性能要求极高的场景下尤为关键。 以下步骤将深入剖析这一差异的原理,并提供具
Python
列表
元组
79
0
Python asyncio.Event在协程间事件通知的用法
2026-04-29 01:15:27
asyncio.Event 是 Python asyncio 库中用于协程间简单通信的同步原语。它的作用类似于一个线程安全的标志位,允许一个或多个协程等待某个事件发生,直到另一个协程将该事件标志位设为“真”。这就好比比赛中的发令枪,裁判(主控协程)鸣枪(设置事件),所有运动员(等待协程)听到枪响后同
Python
asyncio
协程
87
0
Python __slots__为什么能减少内存占用并加速属性访问
2026-04-28 01:25:43
Python 默认的对象创建方式虽然灵活,但在处理数百万甚至上亿个小对象时,会消耗巨大的内存资源并拖慢运行速度。这是由于 Python 默认为每个对象分配了一个字典来存储属性。通过使用 slots,我们可以显著优化这两个方面。 1. 理解默认内存开销 在 Python 中,当你定义一个类并实例化时,
Python
内存优化
性能优化
74
0
Python logging模块的Logger层级传播与Handler配置
2026-04-27 23:27:22
Python logging模块的Logger层级传播与Handler配置 Python标准库中的 logging 模块是一个功能强大的日志系统,但很多开发者在使用时常遇到日志重复打印、配置混乱等问题。掌握Logger的层级结构与传播机制,以及Handler的正确配置方式,是构建清晰日志系统的关键。
Python
logging模块
日志系统
64
0
Python __repr__与__str__方法在调试信息中的区别
2026-04-27 13:28:09
Python repr与str方法在调试信息中的区别 在 Python 调试过程中,直接打印自定义对象往往只能看到内存地址(如 <main.Point object at 0x7f...),这对排查问题毫无帮助。为了获得可读的信息,必须重写 str 和 repr 方法。这两者虽然都是将对象转换为字符
Python
__str__
__repr__
64
0
Redis List实现简单消息队列的BRPOP阻塞读取
2026-04-27 11:17:22
Redis List 是构建轻量级消息队列的极佳数据结构,其中的 BRPOP 命令提供了“阻塞式读取”的能力。相比于轮询,这种方式能极大降低 CPU 消耗。以下将直接演示如何利用这一特性实现生产者消费者模型。 第一阶段:命令行实操体验阻塞效果 在编写代码之前,先通过命令行直观理解 BRPOP 的工作
Redis
消息队列
BRPOP
72
0
Python __del__方法在循环引用时的调用时机问题
2026-04-27 03:13:31
Python del方法在循环引用时的调用时机问题 在 Python 开发中,许多开发者习惯使用 del 方法(析构函数)来释放资源或记录对象销毁日志。然而,当对象之间存在“循环引用”时,del 的调用时机往往与预期不符,导致资源无法及时释放。这不仅会引发内存泄漏,还会让调试变得异常困难。本文将带你
Python
__del__
循环引用
86
0
Python collections.Counter实现词频统计与Top-K查询
2026-04-26 21:28:48
Python collections.Counter实现词频统计与TopK查询 统计文本中单词出现的频率(词频统计)并找出出现次数最多的前几个词(TopK查询),是数据处理和自然语言处理中的基础任务。Python 标准库中的 collections 模块提供了一个强大的工具 Counter,能够以极
Python
Counter
词频统计
97
0
Python collections.deque与list在队列操作中的性能对比
2026-04-26 18:14:46
Python collections.deque与list在队列操作中的性能对比 在Python中,处理数据序列时,list 是最常用的数据结构。然而,当涉及到队列操作——即先进先出(FIFO)的场景时,内置的 list 往往不是最佳选择。Python 标准库中的 collections.deque
Python
collections.deque
list
97
0
Python itertools.tee将一个迭代器拆分为多个独立迭代器
2026-04-25 14:22:27
Python itertools.tee将一个迭代器拆分为多个独立迭代器 Python 中的迭代器是一次性资源,一旦遍历结束,就无法重新开始。这导致在需要多次遍历同一数据流,或在不同逻辑分支中处理同一序列时,直接使用原始迭代器会变得非常棘手。itertools.tee 函数正是为了解决这一痛点而设计
Python
itertools
迭代器
58
0
Python asyncio.gather的return_exceptions异常处理模式
2026-04-25 10:23:07
Python asyncio.gather的returnexceptions异常处理模式 asyncio.gather 是 Python 并发编程中用于批量运行协程的常用工具。默认情况下,只要其中有一个任务出错,整个流程就会立即抛出异常,导致未完成的任务被中断或无法获取已完成任务的结果。为了解决“部
Python
asyncio
并发编程
65
0
Python match-case模式匹配在复杂数据解构中的应用
2026-04-25 01:17:20
Python matchcase模式匹配在复杂数据解构中的应用 检查当前环境使用的 Python 版本,确保版本号不低于 3.10。matchcase 语法是该版本引入的新特性,低版本无法运行。在终端或命令行中 输入以下命令进行验证: bash python version 1. 序列数据的深度解构
Python
模式匹配
数据解构
58
0
Python深拷贝和浅拷贝的区别:为什么修改副本影响了原始数据
2026-04-24 15:22:49
Python深拷贝和浅拷贝的区别:为什么修改副本影响了原始数据 理解Python中深拷贝和浅拷贝的区别对于避免编程中的常见陷阱至关重要。当你修改了一个变量副本却发现原始数据也被改变时,这往往是由于对Python对象引用机制的理解不够深入导致的。 1. 认识 Python中的赋值操作与引用概念 在Py
Python
深拷贝
浅拷贝
70
0
上一页
1
2
3
4
5
6
7
下一页