通过将线程和队列 结合在一起,可以轻松地在 Python
中完成线程编程。本文将研究同时使用线程和队列,创建一些简单但有效的模式,以解决需要并发处理的问题。
对于 Python 来说,并不缺少并发选项,其标准库中包括了对线程、进程和异步 I/O
的支持。在许多情况下,通过创建诸如异步、线程和子进程之类的高层模块,Python 简化了各种并发方法的使用。除了标准库之外,还有一些第三方的解决方案,例如
Twisted、Stackless 和进程模块。本文重点关注于使用 Python 的线程,并使用了一些实际的示例进行说明。虽然有许多很好的联机资源详细说明了线程
API,但本文尝试提供一些实际的示例,以说明一些常见的线程使用模式。
|
首先弄清进程和线程之间的区别,这一点是非常重要的。线程与进程的不同之处在于,它们共享状态、内存和资源。对于线程来说,这个简单的区别既是它的优势,又是它的缺点。一方面,线程是轻量级的,并且相互之间易于通信,但另一方面,它们也带来了包括死锁、争用条件和高复杂性在内的各种问题。幸运的是,由于
GIL 和队列模块,与采用其他的语言相比,采用 Python 语言在线程实现的复杂性上要低得多。
要继续学习本文中的内容,我假定您已经安装了 Python 2.5 或者更高版本,因为本文中的许多示例都将使用 Python
语言的新特性,而这些特性仅出现于 Python2.5 之后。要开始使用 Python 语言的线程,我们将从简单的 "Hello World"
示例开始:
|
如果运行这个示例,您将得到下面的输出:
本文转自IBM Developerworks中国