图书前言

前    言

  Rust是一门令人兴奋的新语言。它为开发人员提供了没有垃圾收集机制的内存安全,从而带来了快速的运行和低内存占用。但是,用Rust重写一切可能是昂贵和有风险的,因为Rust中可能没有对要解决的问题的包支持。这就是Python绑定和pip的用武之地。本书将使开发人员能够用Rust编写可以使用pip安装的模块,这样就能够在需要的时候注入Rust,而不需要承担重写整个系统的风险和工作量。这种方法使开发人员能够在Python项目中尝试和使用Rust。

本书读者

  想用Rust加快代码运行速度的Python开发人员,或者想在不承担太多风险或工作量的情况下尝试Rust的开发人员,都会从本书中受益。读者不需要有Rust的背景。本书介绍了Rust,并使用Python实例让读者快速掌握Rust。

内容介绍

  本书分为3篇,共11章。具体内容介绍如下。

* 第1篇为“了解Rust”,包括第1~3章。

> 第1章为“从Python的角度认识Rust”,介绍了有关Rust的基础知识,重点阐释了Python和Rust之间的区别,以帮助Python开发人员快速了解  Rust,并给出了相关的Python实例,以帮助开发人员掌握Rust概念。

> 第2章为“使用Rust构建代码”,解释了如何在多个页面上构造Rust程序,并使用包管理工具来组织和安装依赖项。

> 第3章为“理解并发性”,介绍了线程和进程的概念,演示了如何在Rust中运行多线程和多进程。该章还介绍了Python中的并发性,以帮助开发人员了解其中的差异。

* 第2篇为“融合Rust和Python”,包括第4~8章。

> 第4章为“在Python中构建pip模块”,讨论了如何构建可以使用pip安装的Python包,还演示了如何在GitHub上托管软件包,以及配置持续集成等。

> 第5章为“为pip模块创建Rust接口”,介绍了如何将Rust代码注入pip模块,并使用Rust设置工具来编译和使用Python中的Rust代码。

> 第6章为“在Rust中使用Python对象”,考虑了另一个方向上的兼容,即在Rust中接受和处理Python数据结构并与之交互。该章还讨论了如何在Rust中创建自定义Python对象。

> 第7章为“在Rust中使用Python模块”,介绍了如何在Rust代码中使用诸如NumPy之类的Python模块。

> 第8章为“在Rust中构建端到端Python模块”,将所有已经讨论的内容打包成一个用Rust编写的功能齐全的Python包。这个包拥有Python接口和命令行功能,可以接受YAML文件进行配置。

* 第3篇为“将Rust注入Web应用程序”,包括第9~11章。

> 第9章为“构建Python Flask应用程序”,构建了一个带有PostgreSQL数据库、NGINX负载均衡器和Celery工作进程的Python Flask应用程序,以使Rust技能更加实用。所有项目都被包裹在Docker中,为将Rust注入Web应用程序打下基础。

> 第10章为“将Rust注入Python Flask应用程序”,讨论了如何利用第9章中构建的Web应用,将Rust模块注入Celery工作进程和Flask应用程序的Docker容器。该章还印证了已经应用的迁移,以自动生成数据库的模式,这样Rust代码就可以直接与数据库连接。此外,该章还介绍了如何使用来自私有GitHub存储库的Rust包。

> 第11章为“集成Rust的最佳实践”,给出了一些提示,说明在为Python编写Rust代码时如何避免常见的错误。

充分利用本书

  建议读者了解Python并能适应面向对象编程。本书将涉及一些高级主题,如元类,但不是必不可少的。Rust编程、Python Web应用程序和使用pip安装的Python模块等都在   本书中有所涉及。

  本书涵盖的软件和操作系统需求如表P.1所示。

表P.1  本书涵盖的软件和操作系统需求

本书涵盖的软件 操作系统需求 Python 3 Windows、macOS或Linux Rust Windows、macOS或Linux Docker Windows、macOS或Linux PyO3 Windows、macOS或Linux Redis Windows、macOS或Linux PostgreSQL Windows、macOS或Linux   建议读者自己输入代码或从本书的GitHub存储库访问代码(下文将提供链接) ,以避免与复制和粘贴代码相关的任何潜在错误。

下载示例代码文件

  本书随附的代码可以在GitHub存储库中找到,其网址如下:

  

  https://github.com/PacktPublishing/Speed-up-your-Python-with-Rust

  

  如果代码有更新,也将在该GitHub存储库中更新。

下载彩色图像

  本书提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像。可通过以下地址下载。

  

  https://static.packt-cdn.com/downloads/9781801811446_ColorImages.pdf

本书约定

  本书中使用了许多文本约定。

  (1)表示文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄等的段落示例如下:

  

2019年,芯片巨头英伟达(NVIDIA)公司的联合创始人兼首席执行官黄仁勋(Jensen Huang)表示,随着芯片组件越来越接近单个原子的大小,它变得越来越难以跟上摩尔定律的步伐,因此可以宣布摩尔定律已经死亡。有关详细信息,可访问:

https://www.cnet.com/news/

moores-law-is-dead-nvidias-ceo-jensen-huang-says-at-ces-2019/

  

  (2)有关代码块的设置如下所示。

  

use std::error::Error;

use std::fs::File;

use csv;

use super::structs::FootPrint;

  

  (3)任何命令行输入或输出都采用如下所示的粗体代码形式。

  

pip install git+https://github.com/maxwellflitton/flitton-fib-rs@main

  

  (4)术语或重要单词采用中英文对照形式,在括号内保留其英文原文。示例如下:

  

当代码编译时,它将为栈(stack)中的不同变量分配内存;当代码运行时,它会将数据存储在堆(heap)中。

  

  (5)界面词汇或专有名词将保留英文原文,在括号内添加其中文翻译。示例如下:

  

首先需要将PyPI账户的用户名和密码存储在GitHub存储库的Secrets(秘密)部分。这可以通过单击Settings(设置)选项卡,然后选择左侧边栏上的Secrets(秘密)选项来完成。

  

  (6)本书使用了以下两个图标。

  表示警告或重要的注意事项。

  表示提示或小技巧。

·VIII·

Python高效编程—基于Rust语言

  

·VII·

前    言