自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 问答 (1)
  • 收藏
  • 关注

原创 python中的ThreadPoolExecutor线程池

返回值submit()返回Future对象,map()返回结果迭代器。任务类型submit()灵活支持不同任务,map()适用于相同任务的批量处理。结果顺序map()保持输入顺序,submit()需要手动管理Future对象。

2025-06-18 23:06:25 525

原创 python中的Lock、RLock、Condition与Semaphore详解

如果计数器为0,线程会被阻塞,直到有其他线程释放信号量。Lock是Python中最基础的同步原语,属于互斥锁,同一时刻只能有一个线程获取锁。各种同步原语的选择取决于具体场景:简单互斥用Lock,递归需求用RLock,复杂协调用Condition,资源池管理用Semaphore。)不同,RLock 会记录持有锁的线程和递归层级,避免同一线程重复获取锁时发生死锁。这里创建一个信号量实例,初始值为3,表示最多允许3个线程同时访问共享资源。语句确保线程在访问资源前获取信号量,访问完成后自动释放信号量。

2025-06-16 22:11:39 609

原创 python多线程通讯中共享变量与Queue的优劣详解

该示例演示了多线程环境下如何使用锁(Lock)确保共享资源(counter变量)的线程安全操作。最终结果正确输出500000,证明锁机制有效避免了竞态条件。需要极高性能的临界区操作简单状态标记(如停止标志)少量数据的实时更新生产者-消费者工作流需要缓冲的任务调度复杂消息传递(如传递对象)# 错误的多线程列表操作t.start()t.join()print(len(shared_list)) # 可能小于10000应改用Queue或+锁。

2025-06-12 22:47:56 662

原创 python中的GIL

Python的GIL(全局解释器锁)限制了多线程在CPU密集型任务中的并行性能,导致多线程可能比单线程更慢。

2025-06-11 22:44:13 295

原创 生成器详解

生成器是Python中一种特殊的迭代器,通过函数和yield关键字实现。其核心特点是惰性计算——仅在需要时生成值,而非一次性生成所有数据。生成器函数执行到yield时会暂停,保留当前状态,下次调用时从暂停处继续执行。该代码实现了从文件中逐行读取内容并过滤包含特定关键词的行,使用生成器(generator)实现高效的内存管理。适合处理大文件或需要流式处理的场景。

2025-06-10 22:03:10 651

原创 迭代协议、迭代器和可迭代对象详解

可以通过实现__iter__()方法创建自定义可迭代对象。

2025-06-09 22:04:53 146

原创 Python中的属性描述符,数据描述符和非数据描述符

Python属性访问机制遵循特定优先级规则:数据描述符(实现__get__和__set__)优先级最高,其次是实例属性,非数据描述符(仅__get__)再次之,最后是__getattr__兜底。数据描述符会拦截属性访问(如@property),而非数据描述符可能被实例属性覆盖。完整查找顺序为:1)数据描述符→2)实例字典→3)非数据描述符→4)类字典→5)__getattr__。这种机制实现了精细的属性控制,支持计算属性、只读属性等功能。

2025-05-26 21:47:34 416

原创 __new__、__init__、__getattr__、__getattribute__四个魔法函数详解

这段代码通过重写__new__方法,确保Singleton类只有一个实例存在。无论创建多少次Singleton对象,返回的都是同一个实例。这种模式在需要全局唯一对象的场景中非常有用。init__init__是 Python 中用于初始化对象实例的魔法方法。它在__new__之后被调用,负责设置对象的初始状态。__init__是开发者最常重写的魔法方法之一。print(obj.value) # 输出: 10getattr是 Python 中用于处理对象属性访问的魔法方法。当访问一个不存在的属性时,会被调用。

2025-05-22 23:30:27 563

原创 set与frozenset以及set中的运算详解

Set 和 Frozenset 是 Python 中用于存储无序且不重复元素的数据类型。Set 是可变的,允许添加或删除元素,而 Frozenset 是不可变的,创建后无法更改。

2025-05-18 22:59:11 261

原创 python中的深拷贝与浅拷贝以及字典中的常用方法

在Python中,深拷贝(deep copy)和浅拷贝(shallow copy)是两种不同的对象复制方式。使用copy模块的copy()和deepcopy()函数分别实现浅拷贝和深拷贝。此外,字典的常用方法如fromkeys、setdefault、get和update可以简化字典操作。根据需求选择合适的拷贝方式,避免意外副作用。

2025-05-18 21:58:14 274

原创 推导式详解

Python中的推导式是一种简洁且强大的工具,用于快速生成列表、字典、集合和生成器对象。列表推导式通过简单的语法生成列表,支持条件筛选和嵌套循环。生成器表达式则使用圆括号,生成一个惰性求值的生成器对象,适合处理大数据集。字典推导式和集合推导式分别用于创建字典和集合,同样支持条件语句和嵌套循环。推导式还可以处理复杂的数据结构,如嵌套列表或字典,并支持多重条件和嵌套循环。通过推导式,代码可以更简洁、高效地完成数据生成和转换任务。

2025-05-14 22:27:29 206

原创 array,deque与bisect详解

bisect 模块支持对有序列表进行二分查找,提供 bisect_left 和 bisect_right 函数,分别返回插入位置的左侧和右侧索引,适用于维护有序列表的场景。array 模块提供高效存储同类型数据的数组类型,适用于数值计算等需要大量同类型数据的场景。deque 是 collections 模块中的双端队列实现,支持在两端高效地进行插入和删除操作,适用于需要频繁在队列两端操作的场景,如实现队列或栈。

2025-05-14 21:41:45 237

原创 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 336

原创 python中+、+=、extend、append的区别

在Python中,+、+=、extend和append用于操作列表,但它们的行为和用途不同。+操作符合并两个列表生成新列表,不修改原列表;+=操作符将元素添加到原列表中,类似于extend,但语法更简洁;extend方法将可迭代对象的元素逐个添加到列表中,直接修改原列表;append方法将单个元素(如列表)添加到列表末尾,也修改原列表。根据需求选择合适方法操作列表。

2025-05-13 22:16:24 299

原创 selenium框架解析

selenium基本操作详解

2023-02-19 17:20:42 1047

原创 java实现验证码功能

使用java实现验证码import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.Random;public class Dish2 { public

2021-10-28 10:38:37 352

原创 Jmeter基础

系列文章目录文章目录系列文章目录前言一、Jmeter如何调用参数?二、Jmeter常用内置对象1.vars2.ctx和prev三、Jmeter内置函数前言随着现在公司对性能测试的需求越来越大,使用到Jmeter的场景也越来越多了,本篇文章,就围绕Jmeter来进行一些基础的分享。一、Jmeter如何调用参数?1.在Jmeter中 ,我们使用${参数名}的方式,来调用参数2.所有以‘__函数名’格式命名的,都表示内置函数。二、Jmeter常用内置对象1.vars如 API 文档 所言

2021-10-11 13:54:26 917

原创 python用几行代码实现数据的按列去重及合并处理

前言:Pandas模块是Python用于数据导入及整理的模块,对数据挖掘前期数据的处理工作十分有用话不多说,先上pandas官方文档:pandas官方文档数据处理参考文档A数据处理参考文档B本次将要实现的需求如下:1.有一个Exscl表数据,该表有学员姓名 ,订单ID,ID ,以及购买的商品ID。数据格式如下:2.现在要将上表处理成如下图所示格式:3.接下来代码处理逻辑主要如下:(1)当前三列的值都一样时,去重。(2)当前三列的值,任意有一列不同时,则不去重。(3)将第四列的值

2021-03-30 16:00:33 1217

原创 Python使用Faker模拟网络虚假数据并保存到Exscl中

Python使用Faker模拟网络虚假数据并保存到Exscl中1.需要使用三个包,分别将他们导入进项目sys包用于在命令行执行from faker import Fakerimport xlwtimport sys2.在我们进行前,先需要创建一个列表,该列表中包含各类信息例如:电话,出生日期,所属省份(还可添加别的属性,调用faker的方法即可)def getInformationList(): InformationList = [] faker = Faker(loc

2021-01-13 15:58:31 435 1

原创 生成器与迭代器小结

生成器与迭代器1.可迭代对象:列表、字符串、字典等等hasatter(list,"__iter__") #返回Ture则为可迭代对象2.迭代器:PS:迭代器并不会一次性把值全部存到内存,而是你读多少,他才存多少,所以不占内存,对于优化内存来说很好可以把迭代器看成一个指针,调用__next__函数一次,则指针就移动一次例如iter_lst,就可以调用4次,指针就会移动到最后,再调用就会报错了,那么怎么把指针重新归位到0呢,最简单的方法就是重新赋值即可(iter_lst = iter(lst))

2020-10-12 14:01:38 129

原创 Xpath定位小结

Xpath语法堂1.Xpath语法教程2.Xpath通过文字匹配contains()函数匹配xpath=//*[@id=“backFeeManage”]//a[@class=“btn btn-primary” and contains(text(), “查询”)]3.Xpath通过多层级定位(1)多层级xpath=//[@id=“schoolListWrapper”]/div[@class=“allSchool”](2)通过//符号匹配A层级下所有路径中B层级的元素,而不管他的位置xpat

2020-09-17 10:52:38 1001 1

原创 python之凯撒密码及大小写字符翻转

编写程序,利用‘凯撒密码’方案,实现对用户输入文字的加密操作1.ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值2.chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符"""编写程序,利用‘凯撒密码’方案,实现对用户输入文字的加密操作凯撒密码:凯撒密码作为一种最为古老的对称

2020-08-19 23:27:45 3203

原创 Python取整及保留小数

Python取整及保留小数欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样

2020-08-18 22:09:46 737

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除