
python
文章平均质量分 71
python的一些相关知识
Van_pre
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python中的ThreadPoolExecutor线程池
返回值submit()返回Future对象,map()返回结果迭代器。任务类型submit()灵活支持不同任务,map()适用于相同任务的批量处理。结果顺序map()保持输入顺序,submit()需要手动管理Future对象。原创 2025-06-18 23:06:25 · 836 阅读 · 0 评论 -
python中的Lock、RLock、Condition与Semaphore详解
如果计数器为0,线程会被阻塞,直到有其他线程释放信号量。Lock是Python中最基础的同步原语,属于互斥锁,同一时刻只能有一个线程获取锁。各种同步原语的选择取决于具体场景:简单互斥用Lock,递归需求用RLock,复杂协调用Condition,资源池管理用Semaphore。)不同,RLock 会记录持有锁的线程和递归层级,避免同一线程重复获取锁时发生死锁。这里创建一个信号量实例,初始值为3,表示最多允许3个线程同时访问共享资源。语句确保线程在访问资源前获取信号量,访问完成后自动释放信号量。原创 2025-06-16 22:11:39 · 673 阅读 · 0 评论 -
python多线程通讯中共享变量与Queue的优劣详解
该示例演示了多线程环境下如何使用锁(Lock)确保共享资源(counter变量)的线程安全操作。最终结果正确输出500000,证明锁机制有效避免了竞态条件。需要极高性能的临界区操作简单状态标记(如停止标志)少量数据的实时更新生产者-消费者工作流需要缓冲的任务调度复杂消息传递(如传递对象)# 错误的多线程列表操作t.start()t.join()print(len(shared_list)) # 可能小于10000应改用Queue或+锁。原创 2025-06-12 22:47:56 · 685 阅读 · 0 评论 -
python中的GIL
Python的GIL(全局解释器锁)限制了多线程在CPU密集型任务中的并行性能,导致多线程可能比单线程更慢。原创 2025-06-11 22:44:13 · 408 阅读 · 0 评论 -
生成器详解
生成器是Python中一种特殊的迭代器,通过函数和yield关键字实现。其核心特点是惰性计算——仅在需要时生成值,而非一次性生成所有数据。生成器函数执行到yield时会暂停,保留当前状态,下次调用时从暂停处继续执行。该代码实现了从文件中逐行读取内容并过滤包含特定关键词的行,使用生成器(generator)实现高效的内存管理。适合处理大文件或需要流式处理的场景。原创 2025-06-10 22:03:10 · 665 阅读 · 0 评论 -
迭代协议、迭代器和可迭代对象详解
可以通过实现__iter__()方法创建自定义可迭代对象。原创 2025-06-09 22:04:53 · 168 阅读 · 0 评论 -
Python中的属性描述符,数据描述符和非数据描述符
Python属性访问机制遵循特定优先级规则:数据描述符(实现__get__和__set__)优先级最高,其次是实例属性,非数据描述符(仅__get__)再次之,最后是__getattr__兜底。数据描述符会拦截属性访问(如@property),而非数据描述符可能被实例属性覆盖。完整查找顺序为:1)数据描述符→2)实例字典→3)非数据描述符→4)类字典→5)__getattr__。这种机制实现了精细的属性控制,支持计算属性、只读属性等功能。原创 2025-05-26 21:47:34 · 446 阅读 · 0 评论 -
__new__、__init__、__getattr__、__getattribute__四个魔法函数详解
这段代码通过重写__new__方法,确保Singleton类只有一个实例存在。无论创建多少次Singleton对象,返回的都是同一个实例。这种模式在需要全局唯一对象的场景中非常有用。init__init__是 Python 中用于初始化对象实例的魔法方法。它在__new__之后被调用,负责设置对象的初始状态。__init__是开发者最常重写的魔法方法之一。print(obj.value) # 输出: 10getattr是 Python 中用于处理对象属性访问的魔法方法。当访问一个不存在的属性时,会被调用。原创 2025-05-22 23:30:27 · 568 阅读 · 0 评论 -
set与frozenset以及set中的运算详解
Set 和 Frozenset 是 Python 中用于存储无序且不重复元素的数据类型。Set 是可变的,允许添加或删除元素,而 Frozenset 是不可变的,创建后无法更改。原创 2025-05-18 22:59:11 · 273 阅读 · 0 评论 -
python中的深拷贝与浅拷贝以及字典中的常用方法
在Python中,深拷贝(deep copy)和浅拷贝(shallow copy)是两种不同的对象复制方式。使用copy模块的copy()和deepcopy()函数分别实现浅拷贝和深拷贝。此外,字典的常用方法如fromkeys、setdefault、get和update可以简化字典操作。根据需求选择合适的拷贝方式,避免意外副作用。原创 2025-05-18 21:58:14 · 286 阅读 · 0 评论 -
推导式详解
Python中的推导式是一种简洁且强大的工具,用于快速生成列表、字典、集合和生成器对象。列表推导式通过简单的语法生成列表,支持条件筛选和嵌套循环。生成器表达式则使用圆括号,生成一个惰性求值的生成器对象,适合处理大数据集。字典推导式和集合推导式分别用于创建字典和集合,同样支持条件语句和嵌套循环。推导式还可以处理复杂的数据结构,如嵌套列表或字典,并支持多重条件和嵌套循环。通过推导式,代码可以更简洁、高效地完成数据生成和转换任务。原创 2025-05-14 22:27:29 · 214 阅读 · 0 评论 -
array,deque与bisect详解
bisect 模块支持对有序列表进行二分查找,提供 bisect_left 和 bisect_right 函数,分别返回插入位置的左侧和右侧索引,适用于维护有序列表的场景。array 模块提供高效存储同类型数据的数组类型,适用于数值计算等需要大量同类型数据的场景。deque 是 collections 模块中的双端队列实现,支持在两端高效地进行插入和删除操作,适用于需要频繁在队列两端操作的场景,如实现队列或栈。原创 2025-05-14 21:41:45 · 242 阅读 · 0 评论 -
python实现可切片的对象
Python 切片语法 [start:stop:step] 允许从序列中提取子集,返回新列表而不修改原列表。start 为起始索引(包含),stop 为结束索引(不包含),step 为步长(默认为1)。切片支持正负索引、步长及反转操作。常见错误如 attempt to assign sequence of size 2 to extended slice of size 3 是由于赋值序列长度与切片长度不匹配,需调整切片范围或步长以解决。通过自定义类的 __getitem__ 方法,可以实现对切片的灵活处理原创 2025-05-13 23:34:36 · 342 阅读 · 0 评论 -
python中+、+=、extend、append的区别
在Python中,+、+=、extend和append用于操作列表,但它们的行为和用途不同。+操作符合并两个列表生成新列表,不修改原列表;+=操作符将元素添加到原列表中,类似于extend,但语法更简洁;extend方法将可迭代对象的元素逐个添加到列表中,直接修改原列表;append方法将单个元素(如列表)添加到列表末尾,也修改原列表。根据需求选择合适方法操作列表。原创 2025-05-13 22:16:24 · 325 阅读 · 0 评论 -
生成器与迭代器小结
生成器与迭代器1.可迭代对象:列表、字符串、字典等等hasatter(list,"__iter__") #返回Ture则为可迭代对象2.迭代器:PS:迭代器并不会一次性把值全部存到内存,而是你读多少,他才存多少,所以不占内存,对于优化内存来说很好可以把迭代器看成一个指针,调用__next__函数一次,则指针就移动一次例如iter_lst,就可以调用4次,指针就会移动到最后,再调用就会报错了,那么怎么把指针重新归位到0呢,最简单的方法就是重新赋值即可(iter_lst = iter(lst))原创 2020-10-12 14:01:38 · 131 阅读 · 0 评论 -
Python取整及保留小数
Python取整及保留小数欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样原创 2020-08-18 22:09:46 · 755 阅读 · 0 评论