
Python
文章平均质量分 70
如渊
这个作者很懒,什么都没留下…
展开
-
SQLAlchemy技术手册
对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。原创 2023-08-22 15:31:51 · 986 阅读 · 0 评论 -
进程\线程\协程的概念及区别
协程(co-routine)是比线程更轻量级的存在,又称微线程,在单线程上执行多个任务,用函数切换,开销极小.协程不通过系统调度,由程序控制,拥有自己寄存器上下文和栈,协程切换时,将寄存器上下文和栈保存,切加时恢复先前保存寄存器和栈,因此协程能保留上次调用时的状态,即局部状态的一个特定组合,每次过程重入时,相当于进入上次调用状态.操作系统调度执行的最小单位,也叫执行路径,依赖进程存在,在一个进程中至少有一个线程,叫主线程.多个线程共享内存(数据共享,全局变量共享),提升程序运行效率.原创 2023-08-03 18:10:11 · 72 阅读 · 0 评论 -
Python 命令行:click 整理学习
click是一个以尽可能少的代码、以组合的方式创建优美的命令行程序的 Python 包。它有很高的可配置性,同时也能开箱即用。它旨在让编写命令行工具的过程既快速又有趣,还能防止由于无法实现预期的 CLI API 所产生挫败感。任意嵌套命令自动生成帮助支持运行时延迟加载子命令很显然,我们需要针对count和name来定义它们所对应的参数信息。count对应为命令行选项--count,类型为数字,我们希望在不提供参数时,其默认值是 1name对应为命令行选项--name。转载 2023-07-26 16:49:00 · 1203 阅读 · 0 评论 -
python线程池ThreadPoolExecutor使用
假设我们必须多线程任务创建大量线程。由于线程太多,因此可能会有很多性能问题,这在计算上会是最昂贵的。一个主要问题可能是吞吐量受限。我们可以通过创建一个线程池来解决这个问题。一个线程池可以被定义为一组预先实例化和空闲的线程,它们随时可以开始工作。创建线程池比我们需要执行大量任务时为每个任务实例化新线程更受欢迎。线程池可以管理大量线程的并发执行,如下所示 -原创 2023-06-30 14:02:00 · 2285 阅读 · 0 评论 -
python多任务之进程、进程与线程对比、进程间通信、进程池Pool
2.1.1 进程程序:例如xxx.py这是程序,是一个静态的进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。不仅可以通过线程完成多任务,进程也是可以的2.1.2. 进程的状态工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态multiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情进程对象 =原创 2022-07-09 18:33:26 · 379 阅读 · 0 评论 -
深拷贝(deepcopy)与浅拷贝(copy)的区别
1.深拷贝与浅拷贝对象的引用(内存地址)”赋值给变量的,在python中有6个标准数据类型,他们分为可变和不可变两类。浅拷贝(copy)1.浅拷贝会创建一个新的容器对象(compound object)2.对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)常见的浅拷贝操作有:注意点:1>拷贝对象中无可变类型元素,原对象的元素值改变不影响新对象的元素值.2>拷贝对象中存在可变类型元素A(例如列表中的子元素是一个字典),拷贝时新对象中可变类型元素A,两者指向同一个内存地址,如果拷贝对象A的值改变原创 2022-07-02 16:30:57 · 6422 阅读 · 0 评论 -
python 解决json.loads()对不标准json格式序列化异常
移除json多余逗号,避免json.loads报错 兼容不标准的json格式原创 2022-06-30 17:14:49 · 2676 阅读 · 0 评论 -
Python库collections
官方说法:collections模块实现了特定目标的容器,以提供Python标准内建容器dict ,list , set , 和tuple的替代选择。通俗说法:Python内置的数据类型和方法,collections模块在这些内置类型的基础提供了额外的高性能数据类型,比如基础的字典是不支持顺序的,collections模块的OrderedDict类构建的字典可以支持顺序,collections模块的这些扩展的类用处非常大,熟练掌握该模块,可以大大简化Python代码,提高Python代码逼格和效率,高手入门转载 2022-06-25 14:55:44 · 15554 阅读 · 2 评论 -
Leetcode刷题笔记-383. 赎金信-python
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。示例 1:输入:ransomNote = “a”, magazine = “b”输出:false示例 2:输入:ransomNote = “aa”, magazine = “ab”输出:false示例 3:输入:ransomNote = “aa”原创 2022-06-22 09:24:37 · 255 阅读 · 0 评论 -
python多任务之线程、全局变量、互斥锁
多线程:线成是cpu调度的单位.多进程:操作系统分配资源的单位.并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务轮流交替执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)并行:对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的任务,多个内核是真正的一起同时执行多个任务.这里指的是任务数小于等于cpu核数,多核cpu是并行的执行多任务,始终有多个任务一起执行.python的thread模块是比较底层的模块,python的threa原创 2022-06-21 11:35:59 · 1942 阅读 · 0 评论 -
anaconda 64位和32位的python共存
注:如本机为32位anaconda则无法切换为64位python版本:3.6anaconda对于python版本的管理还是很方便的,所以这里用anaconda才实现32位和64位python共存1、打开anaconda prompt,输入conda info,可以看到现在用的是64位的。2、切换成32位的set CONDA_FORCE_32BIT=1可以看出已经切换成32位的了3、安装32位的python3.6conda create -n python...原创 2021-07-09 18:06:04 · 1614 阅读 · 0 评论 -
selenium:鼠标动作链及模拟键盘事件
1.鼠标动作链有些时候,我们需要再页面上模拟一些鼠标操作,比如双击、右击、拖拽甚至按住不动等,在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。方法 说明ActionChains(driver) 构造ActionChains对象context_click() 执行鼠标悬停操作move_to_element(above) 右击double_click() 双击context_click() 用于模拟鼠标右键操作, 在调用时需要指定元素定位perfo原创 2021-02-02 18:52:12 · 715 阅读 · 0 评论 -
selenium 弹窗确认异常 元素定位异常
弹窗确认异常,原因多数为两种情况:一.frame因素,情况有二:1.未获取frame,无法找到定位元素.处理方法:#定位元素所属的frame(id=frmMain)Frame = browser.find_element_by_xpath('//*[@id="frmMain"]') #进入framebrowser.switch_to.frame(Frame)#点击确定按钮brow...原创 2020-01-09 16:30:30 · 893 阅读 · 0 评论