0%

对于线程,应用程序开发者遇到的使用场景,99% 的情况下只需知道如何派生一堆独立的线程,然后用队列收集结果。这篇文章讨论实现了 concurrent.futures.Executor 接口的类,这些类对上面这种使用场景进行了封装,使用起来特别容易,不仅能用于线程,而且还能用于进程处理计算密集型任务。同时还会介绍 future,这种对象表示异步执行的操作,类似于 JavaScript 中的 promise。

阅读全文 »

并发指同时处理多件事,并行指同时做多件事。二者不同,但有联系。一个关于结构,一个关于执行。并发用于制定方案,用来解决可能(但未必)并行的问题。并行是并发的一种特殊情况。所有并行系统都是并发的,但不是所有并发系统都是并行的。

这篇文章将展示 Python 的 3 种并发方式:线程、进程和原生协程。

阅读全文 »

这篇文章将实现一个多维向量的 Vector 类。这个类的行为与 Python 中标准的不可变扁平序列一样。这篇文章还将讨论一个概念:把协议当作正式接口。我们将说明协议和鸭子类型之间的关系,以及对自定义类型的实际影响。

阅读全文 »

得益于 Python 数据模型,自定义类型的行为可以像内置类型那样自然。实现如此自然的行为,靠的不是继承,而是鸭子类型:只需按照预定行为实现对象所需的方法即可。对库或框架来说,程序员可能希望你定义的类能像 Python 内置的类一样。满足这个预期也算得上是符合 Python风格

阅读全文 »