news 2026/3/27 7:32:15

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/3/26 6:33:23

“零基础6个月冲进大厂,现在还来得及吗?很担心自己学不学的会

答案是:“来得及,但极具挑战,且需要正确的路径、极致的学习和一点点运气。”​ 这绝不是一条轻松的路,而是一场需要周密计划的“冲刺”。 “来得及”是因为网络安全行业人才缺口巨大,尤其是具备实战能力的安全工程师、…

作者头像 李华
网站建设 2026/3/15 14:57:47

据说算力高达1000 TOPS,华硕Ascent GX10深度评测——模型推理

在AI大模型遍地开花的2025年,算力焦虑已经成为开发者的共同话题。动辄十几万的专业工作站让个人开发者望而却步,而云端GPU又面临着成本高昂、数据隐私等问题。就在这个节点上,华硕推出了一款颇具野心的产品——Ascent GX10,官方宣…

作者头像 李华
网站建设 2026/3/15 22:35:08

JSP如何结合国密算法实现大文件加密存储?

咱是一名福建的“老码农”,最近接了个外包项目,客户要做大文件上传功能,要求还挺细——原生JS实现、20G文件传输、文件夹保留层级、加密传输存储、断点续传兼容IE9… 预算还卡在100块以内(老板说“小项目不搞虚的”)。…

作者头像 李华
网站建设 2026/3/24 15:28:03

JSP中如何利用分段技术实现百万文件上传优化?

📌 毕业设计求生指南:大文件上传系统(兼容IE8版) 😩 现状描述 大家好,我是浙江某三本计算机专业的大三学生,马上要毕业了,现在被导师逼着搞一个**「支持10G文件上传的系统」**&…

作者头像 李华
网站建设 2026/3/15 2:14:34

PyTorch 全面介绍

PyTorch 是由 Facebook(现 Meta)人工智能研究院开发的开源机器学习框架,主打 “灵活、易用、动态计算图”,是当前深度学习领域最主流的工具之一,不管是科研实验、算法原型开发,还是工业级部署,都…

作者头像 李华