Python 潮流周刊#28:两种线程池、四种优化程序的方法

简介: Python 潮流周刊#28:两种线程池、四种优化程序的方法

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿。另有电报频道作为副刊,补充发布更加丰富的资讯。

🐱产品推荐

Walles.AI 是一款适用于所有网站的浏览器插件,支持 GPT4 问答、ChatPDF、网页内容解释及翻译、生成高质量文章、与 Notion 等工具协同、在线摘要 Youtube 视频等。立即前往官网,免费使用(请在 PC 端访问):安装地址

image.png

🦄文章&教程

1、四种优化程序的方法

很值得推荐的文章。正文部分介绍了优化程序的四种方法:使用更好的算法、使用更好的数据结构、使用底层的编程语言、以及接受不太精确的解决方案。文章开头和结尾则提出了一些教训:我们对于性能优化问题容易过度乐观、我们可能只顾性能而牺牲了正确性、不该作过早和复杂的优化、优化的广度比优化的深度更重要。

2、两种线程池,以及为什么需要这两种线程池?

由于 GIL 的限制,因此在 Python 中使用线程池需要注意业务是 CPU 密集型任务还是 IO 密集型任务,这将导致在线程数量和线程池目标上的不同选择。

3、是时候改变了:datetime.utcnow() 现已被弃用

Python 3.12 版本中datetime.datetimeutcnow()utcfromtimestamp() 方法已被标注为“deprecated”,将在未来版本中删除。文章介绍了它们的缺陷,解释了为什么它们会被弃用。替代的方法分别是:datetime.now()datetime.fromtimestamp()

4、Python Web 应用的线上部署

介绍了如何使用 Nginx+Gunicorn+Supervisor、Nginx+uWSGI+Supervisor、Waitress、Meinheld 等不同方案部署 Flask 应用,分析了它们的优缺点。

5、Python GIL 作出的不断变化的“保证”

介绍了 CPython 全局解释器锁的实现细节,介绍了从 Python 3.9 到目前 3.13 开发版之间的变化。其中有一项很大的差别,在 3.9 及早期版本,GIL 在执行很多字节码时会释放,而在 3.13 版本,只在少数字节码上检查是否释放 GIL。

6、使用 pip-compile 和 pip-tools 作 Django 的依赖项管理

Python 的依赖管理有很多选择,文章介绍了 pip-compile 和 pip-tools 的组合方案。

7、Python 程序的 bug 分类

作者将程序的 bug 分成四类:类型错误和 linting 错误、导入时异常、运行时异常、静默的错误。处理的策略是减少出现后面的错误类型,将其变为前面的错误处理。

8、有多少 Python 核心开发者使用类型提示?

Python 的类型提示正在逐渐流行,但是,它在核心开发者群体中已经普及到什么程度了呢?作者经过分析,给出了这样的数据:所有核心开发者中,大约 53% 的人最近有开源项目,其中 39% 的人使用类型提示。近 3 年里加入团队的人中,有 76% 使用类型提示。

9、记一次用 Python 的 ast 模块将 Flask 项目转为 Quart 的尝试

作者为了使用 OpenAI 返回的异步迭代器内容,将不支持异步的 Flask 项目重构成了支持异步的 Quart。但手动修改的工作量太大,因此他想到通过解析 ast 来修改,提升项目转换的效率。

10、Python NumPy 库的可视化解释

文章使用了大量直观的图形展示 Numpy 数据的分布以及数据变化过程,让你轻松掌握 Numpy 数据操作。

11、用组合还是继承?我有不同看法

传统观点认为组合优于继承,但作者认为 Python 不能很好地支持,若教条式使用组合,只会引入问题,因此作者提供了一种简单实现的思路。

12、选择正确的数据仪表板工具:Streamlit 和 Shiny 的独特优势

在数据驱动关键决策的时代,交互式仪表板已成为商业、科学研究等行业不可或缺的工具。Streamlit 和 Shiny(包括 RShiny 及 PyShiny)是功能强大的框架,文章介绍了它们各自的优势。

🎁Python潮流周刊🎁我会在 电报频道 分享很多不收录在周刊里的内容,目前已有 1200+ 同学关注,欢迎你的加入!

🐿️项目&资源

1、screenshot-to-code:利用截图生成 HTML/Tailwind/JS 代码

超级火爆的新项目,它使用 GPT-4 Vision 生成代码,使用 DALL-E 3 生成与截图相似的外观。甚至可以输入 URL 来实时克隆一个网站!(star 19.4K)

2、sqlalchemy_data_model_visualizer:将SQLalchemy数据模型转换为漂亮的SVG图表

将 SQLAlchemy ORM 模型生成高质量的可视化效果,使用 Graphviz 将每个模型呈现为有向图,更容易理解数据库表之间的关系。

image.png

3、aiconfig:配置驱动的 AI 应用开发框架

它通过将提示、模型参数及模型密切相关的逻辑与应用代码分离,降低复杂度。SDK 是与模型无关的,可扩展到任何生成式 AI 模型。

4、PyNest:基于 FastAPI 构建的框架,遵循 NestJS 的模块化架构

可以让你轻松构建可扩展且可维护的 API,支持依赖注入、类型注释、装饰器和代码生成。

5、StyleTTS2:近乎人类水平的文本转语音库

它利用风格扩散和对抗训练与大型语音语言模型 (SLM) 来实现人类水平的 TTS 合成。(star 2.7K)

6、pyjokes:程序员的一句话笑话(笑话即服务) (github.com)

安装后,只需从命令行调用 pyjoke 或将其添加到 .bashrc 文件中,每次打开终端时都会看到一个笑话。

7、gTTS:用于与 Google 的文本转语音 API 交互

用于调用 Google Translate 的文本转语音 API,提供可定制的语音特定的句子分词器,以及可定制的文本预处理器。(star 2K)

8、chatfairy:极简的网页版聊天室,只依赖 Flask

极简的聊天室应用,前后端代码在仅 115 行的单文件中,使用 SSE 作后端消息推送,不依赖websocket,支持用户认证、多用户聊天、上下线通知、路由保护。(投稿自@yuxiaoy1)

image.png

9、streamlit-shadcn-ui:在 streamlit 中使用 shadcn-ui 组件

Streamlit 的组件选择相对局限,且样式比较古老。这个项目将前端流行的 shadcn 组件库引入到 Streamlit 当中,UI 更为美观。

10、video-subtitle-remover:用 AI 去除图片/视频的硬字幕/水印

可无损分辨率将视频中的硬字幕去除,生成去除字幕后的文件,利用 AI 填充原字幕区域;支持自定义字幕位置,支持全视频自动去除所有文本。

11、flowty-realtime-lcm-canvas:使用 LCM 和 gradio 库的草图到图像演示

将你的草稿图实时变成生动的图像,可更改 UI 中的模型 ID 来使用不同的模型。(star 1.5K)

12、pyephem:科学级的天文学计算库

可执行高精度天文学计算,用于查找行星、彗星或小行星的位置,确定特定星体的位置,计算月球各阶段的日期,天文坐标系转换,确定春分和冬至的日期,等等。

本文首发于:pythoncat.top/posts/2023-…


目录
打赏
0
1
1
0
65
分享
相关文章
【强化学习】基于深度强化学习的微能源网能量管理与优化策略研究【Python】
本项目基于深度Q网络(DQN)算法,通过学习预测负荷、可再生能源输出及分时电价等信息,实现微能源网的能量管理与优化。程序以能量总线模型为基础,结合强化学习理论,采用Python编写,注释清晰,复现效果佳。内容涵盖微能源网系统组成、Q学习算法原理及其实现,并提供训练奖励曲线、发电单元功率、电网交互功率和蓄电池调度等运行结果图表,便于对照文献学习与应用。
全面提升Python性能的十三种优化技巧
通过应用上述十三种优化技巧,开发者可以显著提高Python代码的执行效率和性能。每个技巧都针对特定的性能瓶颈进行优化,从内存管理到并行计算,再到使用高效的数值计算库。这些优化不仅能提升代码的运行速度,还能提高代码的可读性和可维护性。希望这些技巧能帮助开发者在实际项目中实现更高效的Python编程。
113 22
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
206 16
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
|
2月前
|
python3多线程中使用线程睡眠
本文详细介绍了Python3多线程编程中使用线程睡眠的基本方法和应用场景。通过 `time.sleep()`函数,可以使线程暂停执行一段指定的时间,从而控制线程的执行节奏。通过实际示例演示了如何在多线程中使用线程睡眠来实现计数器和下载器功能。希望本文能帮助您更好地理解和应用Python多线程编程,提高程序的并发能力和执行效率。
67 20
云数据库实战:基于阿里云RDS的Python应用开发与优化
在互联网时代,数据驱动的应用已成为企业竞争力的核心。阿里云RDS为开发者提供稳定高效的数据库托管服务,支持多种数据库引擎,具备自动化管理、高可用性和弹性扩展等优势。本文通过Python应用案例,从零开始搭建基于阿里云RDS的数据库应用,详细演示连接、CRUD操作及性能优化与安全管理实践,帮助读者快速上手并提升应用性能。
|
3月前
|
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
93 5
Python高性能编程:五种核心优化技术的原理与Python代码
Python实用技巧:轻松驾驭多线程与多进程,加速任务执行
在Python编程中,多线程和多进程是提升程序效率的关键工具。多线程适用于I/O密集型任务,如文件读写、网络请求;多进程则适合CPU密集型任务,如科学计算、图像处理。本文详细介绍这两种并发编程方式的基本用法及应用场景,并通过实例代码展示如何使用threading、multiprocessing模块及线程池、进程池来优化程序性能。结合实际案例,帮助读者掌握并发编程技巧,提高程序执行速度和资源利用率。
39 0
|
3月前
|
多线程优化For循环:实战指南
本文介绍如何使用多线程优化For循环,提高程序处理大量数据或耗时操作的效率。通过并行任务处理,充分利用多核处理器性能,显著缩短执行时间。文中详细解释了多线程基础概念,如线程、进程、线程池等,并提供了Python代码示例,包括单线程、多线程和多进程实现方式。最后,还总结了使用多线程或多进程时需要注意的事项,如线程数量、任务拆分、共享资源访问及异常处理等。
55 7
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
62 2
面试必问的多线程优化技巧与实战
多线程编程是现代软件开发中不可或缺的一部分,特别是在处理高并发场景和优化程序性能时。作为Java开发者,掌握多线程优化技巧不仅能够提升程序的执行效率,还能在面试中脱颖而出。本文将从多线程基础、线程与进程的区别、多线程的优势出发,深入探讨如何避免死锁与竞态条件、线程间的通信机制、线程池的使用优势、线程优化算法与数据结构的选择,以及硬件加速技术。通过多个Java示例,我们将揭示这些技术的底层原理与实现方法。
178 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等