翻译自Laurent Luce的博客
原文名称:Python threads synchronization: Locks, RLocks, Semaphores, Conditions, Events and Queues
原文连接:http://www.laurentluce.com/posts/python-threads-synchronization-locks-rlocks-semaphores-conditions-events-and-queues/
本文详细地阐述了Python线程同步机制。你将学习到以下有关Python线程同步机制:Lock,RLock,Semaphore,Condition,Event和Queue,还有Python的内部是如何实现这些机制的。 本文给出的程序的源代码可以在github上找到。
首先让我们来看一个没有使用线程同步的简单程序。
线程(Threading)
我们希望编程一个从一些URL中获得内容并且将内容写入文件的程序,完成这个程序可以不使用线程,为了加快获取的速度,我们使用2个线程,每个线程处理一半的URL。
注:完成这个程序的最好方式是使用一个URL队列,但是以下面的例子开始我的讲解更加合适。
类FetchUrls是threading.Thread的子类,他拥有一个URL列表和一个写URL内容的文件对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
|