news 2026/9/2 6:38:45

python一些小细节

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python一些小细节

GIL锁:

当python使用多线程的时候, 每个线程通过请求这个锁获取运行权。 结束时归还


async/await/asyncio/gather/create_task/ThreadPool

理解asynciohttps://www.bilibili.com/video/BV1oa411b7c9?spm_id_from=333.788.videopod.sections&vd_source=8ca92588511fc633026e558331f021cb

装饰的function,

coroutine object

真正的并行和协程: 2s执行结束

async def main(): task1 = asyncio.create_task(say_after(1, "hello")) task2 = asyncio.create_task(say_after(2, "world")) print("start at", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) await task1 await task2 print("end at", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
串行, 3s执行结束
async def main(): print("start at", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) await say_after(1, "hello") await say_after(2, "world") print("end at", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

如果使用gather方式, 不需要单独create task再放进去(伪协程)

async def main(): print("start at", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) res = asyncio.gather( say_after(1, "hello"), say_after_2(2, "world") ) print(res) print("end at", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

threadpool

with ThreadPoolExecutor(max_workers=2) as executor: # 存储Future对象与自定义数据的映射 future_to_params = {} for task_id in range(1, 4): delay = task_id # 任务1延迟1秒,任务2延迟2秒,任务3延迟3秒 future = executor.submit(task, delay) future_to_params[future] = (task_id, delay) # 关联任务ID和延迟 # 按完成顺序处理 for future in as_completed(future_to_params): task_id, delay = future_to_params[future] try: result = future.result() print(f"任务ID:{task_id},{result}") except Exception as e: print(f"任务ID:{task_id},执行失败:{e}")

VizTracer:

Viztracer开发者讲解https://www.bilibili.com/video/BV1d34y1C78W?spm_id_from=333.788.player.switch&vd_source=8ca92588511fc633026e558331f021cb&p=2

基础用法:

装pip包

全局方式使用: python 1.py -> viztracer 1.py

内部函数方式使用:

with VizTracer(): func()

Perfetto(google 开源的trace)

Jupyter中使用:

# 初始load %load_ext viztracer # 使用时 %%viztracer
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 17:52:00

PostgreSql 常用聚合函数

基础准备 CREATE TEMP TABLE demo(id int, v int, t text); INSERT INTO demo VALUES(1, 10, a),(2, 20, b),(3, NULL, c);idvt110a220b3NULLc注意:版本基于 PG 15,全部自带,无需扩展 A. 基础统计 SELECT count(*) AS cnt, -- 3c…

作者头像 李华
网站建设 2026/9/2 20:19:22

露,信息化集成化信号采集与处理系统信息化集成化信号采集处理系统 机能生理实验系统 信息化集成化生物信号采集与处理系统

一体化生物机能实验系统核心由可移动实验平台、生物信号采集处理系统等四大功能模块构成。该系统将多项实验核心功能与管理模块进行融合,具体涵盖基础实验操作平台、高精度生物信号采集处理单元、附带动物体温实时监测功能的动物呼吸机,以及实验环境监测…

作者头像 李华
网站建设 2026/9/2 11:37:27

文件格式转换神器,牛批了

今天给大家推荐一款非常不错的文件格式转换软件,已经被汉化,没有广高、免费,有需要的小伙伴及时下载收藏。 FileConverter 多媒体格式转换软件 这款工具安装后没有界面,鼠标右键菜单中可以找到,包含了音频、视频、PDF…

作者头像 李华
网站建设 2026/9/3 3:44:14

宽论视角下量化与价值投资的对立统一之道

在金融投资的广阔领域中,宽论犹如一座灯塔,为投资者指引着方向。宽论中对于量化与价值投资对立统一关系的探讨,为我们理解和运用这两种投资策略提供了全新的视角。深入研究宽论中这一核心观点,对于投资者提升投资水平和盈利能力具…

作者头像 李华
网站建设 2026/9/2 15:12:00

【拯救HMI】色彩在工业HMI中的科学应用:不仅仅是“红停绿行”

颜色是HMI中最强大的视觉工具之一,但也是最容易被误用的。本文将深入探讨色彩心理学、可达性设计(色盲友好)以及如何建立一套科学、高效的色彩编码体系。色彩的心理暗示:红色: 立即引起注意,用于紧急停止、…

作者头像 李华
网站建设 2026/9/3 2:06:23

软件测试基本流程和方法:从入门到精通

自动化测试在现代软件开发中的崛起 随着软件行业的快速发展,自动化测试已从辅助工具演变为软件开发流程中不可或缺的环节。它不仅提升了测试效率,还显著降低了人为错误,尤其在持续集成/持续部署(CI/CD)和敏捷开发环境…

作者头像 李华