news 2026/8/7 21:59:54

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/8 14:06:27

如何衡量推广效果(如投产比、转化率)?一位餐饮老板的实战自白

凌晨两点,我蹲在螺蛳粉店的台阶上,盯着手机里豆包APP的搜索结果页面。这是今天第三次确认——我的店名终于出现在“附近好吃的螺蛳粉”搜索结果的第一位。三个月前,我根本不敢想这样的场景。被算法“卡脖子”的生意 我的店开在上海&#xff0…

作者头像 李华
网站建设 2026/8/7 22:52:19

大模型安全威胁全解析,Agent架构设计避坑指南,小白必看

一、报告价值锚点 趋势与机遇 Agent-first设计:业务流程原生嵌入Agent基因,组织向“人机混编”转型。虚拟劳动力平台:中小企借标准化Agent租赁切入智能化,B2B服务蓝海开启。生态级互联互通:Agent App Store雏形浮现&…

作者头像 李华
网站建设 2026/8/8 11:56:42

SMDJ45A单向 TVS瞬态抑制二极管 :3000W浪涌保护管 防雷击抗静电

SMDJ45A单向 TVS瞬态抑制二极管 二极管产品已经跟我们的生活有着密不可分的联系了, TVS瞬态抑制二极管,是一种高效能保护二极管,产品体积小、功率大、响应快等诸多优点 TVS瞬态抑制二极管SMDJ45A,是一种二极管形式的高效能被动保…

作者头像 李华
网站建设 2026/8/8 4:25:53

Foundation 文本

Foundation 5 文本(Typography) Foundation 5 提供了丰富的排版(Typography)工具,包括标题、段落、内联文本元素、对齐方式等。默认样式基于 Sass 变量,可自定义,但开箱即用非常美观。 1. 基本…

作者头像 李华
网站建设 2026/8/7 23:10:52

Sui 主网升级至 V1.61.2

其他升级要点如下所示: 协议 #24343:对 coin.move 的框架进行了修改。 gRPC #24244:对于尚未完全写入的新检查点,不再返回 “Internal Error”,而是返回 “Not Found”。 GraphQL #24202:修复了一个与…

作者头像 李华