Python
文章平均质量分 75
python开发笔记
学习与分享:python开发,后端,前端,测试工具开发,网络原理
展开
-
python(63): dict: del/pop不释放内存
Python中的字典,只有不再使用的时候才会释放对应的内存。在使用 pop 或者 delete 删除字典中的item(或者说entry)后,为了保证hash table 探测链的完整,那个被删除的entry只是被标记成了空,并没有真正被删除掉,所以该字典的内存占用没有得到释放。这是为了避免多度重建hash table。原创 2024-06-25 10:07:46 · 255 阅读 · 0 评论 -
python(62) SQLAlchemy库使用
SQLAlchemy库原创 2024-05-25 00:02:51 · 84 阅读 · 0 评论 -
python(58) pyvisa使用
仪器自动化原创 2024-01-25 16:30:17 · 1064 阅读 · 0 评论 -
python(57): 类与实例化
python类初始化内部类原创 2024-01-21 20:13:34 · 899 阅读 · 0 评论 -
python(53): 多线程与多进程
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。关于多进程和多线程,教科书上最经典的一句话是“线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。原创 2023-12-06 17:20:33 · 1021 阅读 · 0 评论 -
python(50): 串口通信
python 的串口通信_youandme520的博客-CSDN博客_串口通讯python原创 2023-02-08 10:40:14 · 284 阅读 · 0 评论 -
python(48): 进程,线程 ,协程
进程,线程 ,协程。原创 2022-08-19 23:19:45 · 1810 阅读 · 0 评论 -
python multiprocessing 报错cannot pickle ‘_io.TextTOWrapper‘ object
这个问题主要是出在了在multiprocessing中,开新的process的时候有对象是一个 _io.TextIOWrapper,而这个类很大可能是你打开了一个文件并将其赋值给了一个变量同时该文件没有关上,那么这个变量就是一个 _io.TextIOWrapper 对象,且这个对象在multiprocessing中是不能被序列化的。解决方式是将变量 _io.TextIOWrapper 在 开新的process的时候关掉或者不共享。.........原创 2022-08-18 11:37:55 · 3094 阅读 · 0 评论 -
python(47): 多线程多进程应用-批量造数据小结
1.2 写进多个dbf文件,每个dbf文件关联两个sql文件-关联列为1.3的累加列1.3 dbf文件两列全局唯一并累加1.4 sql文件三列全局唯一并累加。原创 2022-08-11 11:39:01 · 620 阅读 · 0 评论 -
python(43): dbf文件读写,报错解决
代码】python(43)dbf文件读写。原创 2022-07-20 16:06:07 · 1602 阅读 · 0 评论 -
python(41): 数据可视化--Matplotlib入门篇
python: 数据可视化Matplotlib入门篇原创 2022-06-06 10:16:50 · 185 阅读 · 0 评论 -
python(40): 数据可视化--pyecharts入门篇
python(): pyecharts原创 2022-05-05 23:35:57 · 572 阅读 · 0 评论 -
python(39): 异常处理try...except…finally的执行规则
try…except…finallyfinally的功能:不管try中的代码是否有异常,最终都会调用finally中的代码finally可以结合try...except,try...except...else使用,也可以仅有try和finally。1. 一定要避免在finally中编写return,raise等会终止函数的语句。2. try中已经有return 还执行finally吗?...原创 2022-04-12 10:37:08 · 1794 阅读 · 0 评论 -
python(38): pip在线/离线安装,not a supported *on this platform,查找可支持的库版本
方法1:win32常用:import pip;print(pip.pep425tags.get_supported())amd64常用:import pip._internalprint(pip._internal.pep425tags.get_supported())或import pip._internal.pep425tags或import wheel.pep425tags as w方法2:原创 2022-04-01 17:33:35 · 2073 阅读 · 0 评论 -
python(9): 实现LRU
题目:设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1) 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。实现:1.采用字典+双向链表组合实现2.字典key为存数据时的key;字典value为原创 2021-01-13 23:11:07 · 609 阅读 · 0 评论 -
算法: 五大算法
1.快速排序算法原理:1.数组中找出一个值作为参考,遍历数组剩余值,比此值小则放在左边数组,比此值大则放在右边数组2.对分开的左,右数组进行步骤1处理;依次递归处理最终得到排序后的数组时间复杂度:O(nlogn)def quick_sort(a): if len(a)<2: return a left,right = [],[] mid_index = int(len(a)/2) mid = a[mid_index] de.原创 2020-11-20 12:01:49 · 652 阅读 · 0 评论 -
python(37): json操作
JSON在python中分别由list和dict组成。这是用于序列化的两个模块:json: 用于字符串和python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换Json模块提供了四个功能:dumps、dump、loads、loadpickle模块提供了四个功能:dumps、dump、loads、loadjson dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中 loads把字符串转换成数据类型 load..原创 2022-03-31 16:39:05 · 2525 阅读 · 0 评论 -
python(35): 协程池 协程锁
python 协程池原创 2022-02-14 11:03:36 · 1093 阅读 · 0 评论 -
python(36): 协程异步场景简单使用示例
python 协成异步场景使用,原创 2022-01-20 10:15:38 · 2113 阅读 · 0 评论 -
python(34): 命令行参数,argparse库
1.基本方法介绍import argparse #倒入模块parser = argparse.ArgumentParser() #创建参数解析对象parser.add_argument("-p", "--plugin", help="run the plugin case", default='business',type=int) #添加参数args = parser.parse_args() #获取参数集print(args.plugin) #取具体参数group = argp原创 2022-01-17 10:59:31 · 364 阅读 · 0 评论 -
利用SWIG将C++库转为Python
swig 将c++转换为python 接口_jishuqianjin的博客-CSDN博客转载 2021-11-23 09:46:21 · 1819 阅读 · 0 评论 -
python(33): 三种Queue的区别
一、Queue(队列)Queue是python中的标准库,可以直接import 引用,队列默认遵循先进先出原则。import queueq = queue.Queue(10)# 向队列中添加元素q.put('yang')q.put(4)q.put(['yan', 'xing'])# 从队列中取出元素,默认的队列是先进先出的q.get()# 'yang'q.get()# 4q.get()# ['yan', 'xing']当一个队列为空的时候如果再用get取则会堵塞,所转载 2021-11-12 12:40:46 · 1300 阅读 · 0 评论 -
python协程(5): 协程使用与async,await
使用:参考:python 协程(2)-- asyncio的核心概念与基本架构(含任务创建执行标准用法)_Python开发分享的博客-CSDN博客博客3.2章节注意事项:在asyncio库中,协程使用@asyncio.coroutine装饰,使用yield from来驱动,在python3.5中作了如下更改:@asyncio.coroutine -> asyncyield from -> await参考:Python中协程异步原创 2021-11-09 12:06:36 · 880 阅读 · 0 评论 -
python(31): 调试库pdb使用
pdb有2种用法:非侵入式方法(不用额外修改源代码,在命令行下直接运行就能调试)python3 -m pdb filename.py非侵入式逐行可调试侵入式方法(需要在被调试的代码中添加一行代码然后再正常运行代码)import pdb;pdb.set_trace()侵入式:import pdba = 1b = 2pdb.set_trace()print('jksgvdfkjsdhbhelp')执行到pdb.set_trace()行是,可用调试命令进行调试:.原创 2021-11-02 17:08:49 · 614 阅读 · 0 评论 -
python(30): flush()的使用,实时写文件,实时写csv实时查看
#demofoo = open(xxx_file, 'a+', encoding='utf-8')for i in range(20): foo.write('true\n') foo.flush() time.sleep(1)foo.close()flush()方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush...原创 2021-08-10 10:25:49 · 4725 阅读 · 0 评论 -
python(42): socket 网络编程自定义私有协议
python socket编程(1)原创 2022-07-04 17:36:05 · 1340 阅读 · 0 评论 -
python(29):struct模块
python之struct原创 2021-07-19 21:13:35 · 10248 阅读 · 0 评论 -
python(26): 字符串前加‘u‘ ‘b‘ ‘r‘ ‘f‘的作用
1、字符串前加 u例:u"我是含有中文字符组成的字符串。"作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。2、字符串前加 r例:r"\n\n\n\n” 表示一个普通生字符串 \n\n\n\n,而不表示换行了。作用:去掉反斜杠的转移机制。(特殊字符:即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。 )应用:常用于正则表达式,对应着re模块。转载 2021-06-16 10:40:57 · 221 阅读 · 0 评论 -
python(25): 字符串编码操作utf-8,gbk
本节内容1、编码介绍2、字符编码介绍3、总结说到python的编码,一句话总结,说多了都是泪啊,这个在以后的python的开发中绝对是一件令人头疼的事情。所以有必要要讲讲清楚一、编码介绍1、须知:在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicodeunicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为ut转载 2021-06-15 19:28:41 · 13308 阅读 · 0 评论 -
pytest源码解读HookspecMarker类和HookimplMarker类分析
1 pluggy简介pluggy是一个非常优秀的插件系统,它是理解pytest的核心,只有理解了pluggy的原理,才能更好的理解和使用pytest,否则见到了pytest的很多应用都会感觉很难理解pluggy插件总共的代码量不足一千行,而实现的功能却是如此的强大和好用,这不由得让我们对pytest的源码实现充满了好奇,接下来一段时间就详细的由浅入深的来解读pluggy源码,这个过程中,同样会继续总结一些基础的或者高级的python的知识点。当然随着对pluggy源码的深入,也会发现很多在网上书转载 2021-06-10 20:46:51 · 731 阅读 · 0 评论 -
python(23): 使用select进行io多路复用
select()的机制中提供一fd_set的数据结构,实际上是一long类型的数组, 每一个数组元素都能与一打开的文件句柄(不管是Socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成, 当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执行了select()的进程哪一Socket或文件可读或可写。主要用于Socket通信当中。总结:select主要用于socket通信当中,能监视我们需要的文件描述变化。非阻塞式I/O编程特点如果一个转载 2021-05-18 19:47:28 · 2344 阅读 · 1 评论 -
anconda 安装及使用
anconda 使用原创 2021-05-12 23:52:06 · 1726 阅读 · 2 评论 -
python(22): scapy
模块简介Scapy是一个由Python编写的强大工具,目前很多优秀的网络扫描攻击工具都使用了这个模块。也可以在自己的程序中使用这个模块来实现对网络数据包的发送、监听和解析。这个模块相对于Nmap来说,更为底层。可以更直观的了解网络中的各类扫描攻击行为。相对于Nmap来说,Scapy模块只会把收到的数据包展示给你,并不会告诉你这个包意味着什么。例如,当你去医院检查身体时,医院会给你一份关于身体各项指标的检查结果,而医生也会告诉你得了什么病或者没有任何病。那么Nmap就像是一-个医生,它会替你搞定-原创 2021-05-07 23:57:27 · 3825 阅读 · 0 评论 -
python(21): 编程易错点 陷阱清单2
Python虽然没有C/C++的指针和各种数据类型转换,但不代表它没有一片坦途,对于初学者,再感叹Python的简单和强大之时,可能一不小心就掉到陷阱中去了。为了给后来者警示,特总结Python的各种陷阱,以起到“前车之覆,后车之鉴”的效果。陷阱1:函数的默认参数只初始化一次对于Python函数的默认参数,它只在定义之时执行一次。对于不可变数据类型,如string类型等,可能没什么影响。但对于 list, dictionary,大多数类的实例对象等而言,区别就很大了。如下所示:...转载 2021-04-09 18:07:02 · 242 阅读 · 0 评论 -
python(20): 编程易错点 陷阱清单1
第一:以mutable对象作为默认参数 这个估计是最广为人知的了,Python和其他很多语言一样,提供了默认参数,默认参数确实是个好东西,可以让函数调用者忽略一些细节(比如GUI编程,Tkinter,QT),对于lambda表达式也非常有用。但是如果使用了可变对象作为默认参数,那么事情就不那么愉快了>>> def f(lst = []): ... lst.append(1) ... return lst ... >>> f()转载 2021-04-09 16:31:41 · 171 阅读 · 0 评论 -
python(19): 默认参数变量陷阱
python 编程中存在一个陷阱:def append_list(num, list_num=[]): print(list_num) for i in range(num): list_num.append(i * i) print(list_num)if __name__ == '__main__': print('==============') append_list(2) print('wwwwwwwwwwwwwwwwww原创 2021-04-09 16:06:14 · 302 阅读 · 0 评论 -
python(18): 线程池,多线程,子进程多层调用实践
一.需求多个镜像仓库之间的镜像同步:根据接收到的指令数据,开始镜像同步程序进行同步并采集分析同步结果,上传同步结果备注:镜像同步时需要占用磁盘IO和网络IO资源,所以需要限制并发执行数二.方案图描述:1.采用线程池方式控制同时执行的线程数2.消息队列实现任务的发送和接收3.子进程实现镜像同步工具的调用,4.线程池某个线程中再开启两个线程实现对镜像同步工具stdout,stderr信息的接收5.根据镜像同步工具输出规律,正则表达式实现对输出结果分析出成果/失败图:原创 2021-02-27 22:24:13 · 469 阅读 · 2 评论 -
python 线程(1)-- 常用方法与属性,锁,同步
python 线程(1)-- 常用方法与属性参考:https://www.cnblogs.com/chenhuabin/p/10082249.html#_label2_7原创 2021-02-25 23:26:39 · 1256 阅读 · 0 评论 -
python协程(4): asyncio结合多线程解决阻塞问题以及timer模拟
一、异步方法依然会假死(freezing)什么是程序的假死,这里不再多描述,特别是在编写桌面程序的时候,如果是使用单个线程,同步函数的方式,假死是不可避免的,但是有时候我们即使是使用了异步函数的方式依然是不可避免的,依然会假死,这是为什么呢,下面会通过几个例子来详细说明。1、一般程序的调用方“假死” import asyncioimport timeimport threading #定义一个异步操作async def hello1(a,b): print(f"异步函数开始转载 2021-02-25 23:28:07 · 5876 阅读 · 1 评论 -
python协程(3): asyncio的EventLoop以及Future详解
一、事件循环EventLoop事件循环是asyncio的核心,异步任务的运行、任务完成之后的回调、网络IO操作、子进程的运行,都是通过事件循环完成的。在前一篇文章中,已经提到过,在python3.7中,我们甚至完全不用管事件循环,只需要使用高层API,即asyncio中的方法,我们很少直接与事件循环打交道,但是为了更加熟悉asyncio的运行原理,最好还是了解EventLoop的设计原理。1、事件循环的创建、获取、设置(上文已经介绍过了)(1)asyncio.get_running_loop(转载 2021-02-25 23:28:12 · 7795 阅读 · 0 评论