- 博客(20)
- 问答 (2)
- 收藏
- 关注
原创 asyncio.Semaphore限制协程并发数
value=1众所周知,通常协程执行时,不像线程池、进程池一样可以限制最大数量,而且他也没有这个参数。但是可以使用asyncio.Semaphore限制协程并发数。先看示例(文章基于python 3.10)await。
2025-12-23 23:22:31
255
原创 python 协程的简单使用
Python asyncio提供了三种主要机制来运行协程:1) asyncio.run作为顶层入口点;2) 使用await直接执行协程;3) 通过asyncio.create_task()并发运行多个协程任务。对比示例展示了顺序执行(耗时3秒)和并发执行(耗时2秒)的区别。 高级API包括: asyncio.gather():并发运行多个可等待对象,可设置return_exceptions参数控制异常处理方式; asyncio.wait_for():为单个任务设置超时; asyncio.wait():为多个
2025-12-23 21:08:21
735
原创 django redis简单使用
django-redis是Django的Redis缓存后端实现,通过配置settings.py中的CACHES即可使用Redis作为缓存系统。配置包括安装django-redis包、设置LOCATION(支持多服务器)、TIMEOUT(单位秒,可局部覆盖)等选项。提供了两种获取缓存对象的方式:手动通过caches["别名"]或自动使用cache默认对象。此外,可通过get_redis_connection直连Redis进行操作。文档参考包括Django官方缓存文档和Redis相关命令文档
2025-12-23 00:21:05
346
原创 forms表单类验证常用操作
本文摘要: 本文介绍了Django forms表单的常用验证方法,适用于前后端分离开发场景。主要内容包括:表单实例创建与数据绑定(is_bound)、数据格式验证(is_valid)、错误信息处理(errors及相关方法)、主动添加错误字段(add_error)、表单值初始化方式(initial)及其与数据绑定的区别、检查数据变化(has_changed)、访问字段值的两种方式(cleaned_data和data)。特别强调了表单验证(clean_<fieldname>方法)与字段验证的区别,并
2025-12-07 01:53:09
917
原创 关于django 4.2 View类视图的异步方法
本文探讨了Django 4.2中异步查询的实现方式。通过测试发现,原生Django的async for查询并不会自动分批次获取数据,而是单次查询所有结果。文章指出: 同步和异步查询在默认情况下都会一次性加载所有数据 建议使用iterator()或aiterator()实现真正的流式读取 异步视图应配合ASGI服务器使用才能发挥最佳性能 类视图中若有一个异步方法则所有方法都需设为异步 不同数据库对异步ORM的支持程度不同,需参考文档 测试表明,当前版本的Django异步查询行为与部分AI回答存在差异,开发者应
2025-11-28 00:00:34
956
原创 python 装饰器的简单使用以及self参数传递问题
网上有很多装饰器解释与使用教程,这里不过多赘述,本文章主要记录最近在手动应用装饰器时遇到的类的方法中self获取问题。
2025-02-05 22:39:56
584
原创 git加速仓库克隆与浅克隆后如何提交
参数就可以,加上后,如果仓库下有子模块,对于子模块的克隆也会浅克隆(子模块的使用感觉很鸡肋,提交很麻烦)如果源仓库是完整的,将浅层资源库转换为完整的仓库,消除浅层仓库带来的所有限制。对于浅克隆后的代码仓,是不能直接提交的,因为git的提交会有安全措施。如果源仓库是浅层的,尽可能多的获取,使当前仓库的历史与源仓库相同。git可以开启多线程克隆,对于有多个子仓库的代码克隆,可以添加。如下面的例子,-j后的数字表示指定的线程数量。我这里给出的方案是进入到本地克隆下的仓库后,使用。应该还有其他解决方案。
2024-12-23 06:35:42
865
原创 python 线程中事件对象
事件对象可以用于(线程可以使用事件对象等待某个条件的发生。一个线程可以调用wait()方法在事件对象上阻塞,直到事件被另一个线程设置为通知状态。
2024-12-16 22:56:28
480
原创 python 线程中的锁对象的简单使用
文档原话是当多个线程在 acquire() 等待状态转变为未锁定被阻塞,然后 release() 重置状态为未锁定时,只有一个线程能继续执行;至于哪个等待线程继续执行没有定义,并且会根据实现而不同。就是获取锁的线程会继续执行,而其余线程如果也获取锁,则会阻塞。(当循环到5时,第一个线程先获取到锁,然后继续执行,直到释放锁,执行完第二个线程获取到锁,再接着执行)这个特性是对同一个锁而言,如果是两个锁,则互相不影响。在多线程中对一个共享资源进行更改时,可以使用锁。(这里线程1、2获取了锁,线程3阻塞)
2024-12-16 22:15:17
750
原创 python shutil.copytree目录递归拷贝 使用自定义拷贝函数
本文记录shutil.copytree的介绍与使用自定义拷贝函数的实现,基于python3.9。自定义函数签名需要与shutil.copy(src, dst, *, follow_symlinks=True)函数一致这句话是官方文档中说的,但是查看源代码逻辑可以判断如果只是简单的拷贝,不必一摸一样。 这个自定义方法实现了对文件的拷贝,并且转化了编码格式为utf-8
2024-11-25 23:56:18
765
原创 python 线程与多线程简单使用
线程创建通过类创建类参数介绍group应该为 None;为了日后扩展 ThreadGroup 类实现而保留。target用于 run() 方法调用的可调用对象。默认是 None,表示不需要调用任何方法。name线程名称。默认情况下,由 “Thread-N” 格式构成一个唯一的名称,其中 N 是小的十进制数。args是用于调用目标函数的参数元组。默认是 ()。kwargs是用于调用目标函数的关键字参数字典。默认是 {}daemondaemon 参数将显式地设置该线程是否为守护模式。
2024-11-18 23:17:07
1037
1
原创 tar常用用法
tar常用用法原因:在某版本机器上手动打入追加命令,使用绝对路径,给出警告,但是能正常追加。之后通过程序运行shell命名,给出了警告,但是内容没有追加上。
2023-09-13 22:05:27
236
原创 git 查看版本操作记录
对于在第二步添加的文件,在add后再次比较,没有显示,然后修改这个文件,也没有显示。该命令您显示项目中已修改的文件,已设置且准备提交的文件以及未跟踪的文件。查看所有版本操作记录,显示所有版本操作记录,如上图流程所示,显示结果为base,one,base,two。假设三个版本中都有修改,则会全部显示,页面太小会显示不全,按向下键查看。2、修改文件,并且新增一个文件,运行后发现,新添加的文件没有显示,因为没有被索引追踪。该命令能查看这个版本之前的所有版本,但是存在如图所示的情况,不能显示所有的。
2023-09-13 21:11:47
1267
原创 django 数据库存在数据 models模型变更提示impossible to add a non-nullable field ‘xxx‘ to app without specifying
1、输入1,表示选择第一项,然后输入一次性默认值,char类型需要带。数据库存在数据,models模型变更生成迁移文件提示。给该字段新增 default=“xxx” 表示默认值。或null=True 表示允许为空。2、更改models。
2023-09-12 20:50:05
1573
关于实现下载功能,整体流程看着没错误,但是没有提示下载。想问问这个是怎么回事
2021-11-30
关于request.request请求的方法
2021-09-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅