Python学习06--多线程之线程同步、通信
2015-01-08 10:32
411 查看
1.线程同步
<1>简单的线程同步使用
使用Thread对象的Lock和RLock可以事先简单的线程同步,RLock和Lock偶具有acquire方法和release方法
结果:每隔2s打印一次
3
6
9
12
15
18
21
24
27
30
<2>使用条件变量保持线程同步
python的Condition对象提供了对复杂线程同步的支持,使用Condition对象可以在某县时间出发后才处理数据
Condition对象除了具有acquire方法和release方法以外,还有wait、notify、notifyAll等方法用于条件处理
结果;
1000000
0
0
<1>简单的线程同步使用
使用Thread对象的Lock和RLock可以事先简单的线程同步,RLock和Lock偶具有acquire方法和release方法
''' Created on 2015-1-7 @author: huangpeng03 ''' import threading import time x =0 class mythread(threading.Thread): def __init__(self,threadname): threading.Thread.__init__(self,name=threadname) def run(self): global x lock.acquire() for i in range(3): x = x+1 time.sleep(2) print x lock.release() if __name__ == '__main__': lock = threading.RLock() t1 = [] for i in range(10): t = mythread(str(i)) t1.append(t) for i in t1: i.start()
结果:每隔2s打印一次
3
6
9
12
15
18
21
24
27
30
<2>使用条件变量保持线程同步
python的Condition对象提供了对复杂线程同步的支持,使用Condition对象可以在某县时间出发后才处理数据
Condition对象除了具有acquire方法和release方法以外,还有wait、notify、notifyAll等方法用于条件处理
''' Created on 2015-1-8 @author: huangpeng03 ''' import threading class Producer(threading.Thread): def __init__(self,threadname): threading.Thread.__init__(self,name = threadname) def run(self): global x con.acquire() if x == 1000000: con.wait() pass else: for i in range(1000000): x = x+1 con.notify() print x con.release() class Consumer(threading.Thread): def __init__(self,threadname): threading.Thread.__init__(self) def run(self): global x con.acquire() if x == 0: con.wait() pass else: for i in range(1000000): x = x-1 con.notify() print x con.release() x = 0 if __name__ == '__main__': con = threading.Condition() p = Producer('Producer') c = Consumer('Consumer') p.start() c.start() p.join() c.join() print x
结果;
1000000
0
0
相关文章推荐
- Python学习总结笔记(3)--多线程与线程同步
- python学习 二 06 爬一个图片网站-多线程方式下载
- 多线程开发学习笔记之线程同步——互斥量
- 多线程开发学习笔记之线程同步——事件
- 学习java多线程的笔记3-使用BlockingQueue阻塞队列来模拟两个线程之间的通信
- 【python学习】多线程相关知识
- python通信+多线程动手项目——多用户IM ---------- stedy:综合实战项目
- 简单的学习Python多线程
- Python多线程学习
- python 多线程学习
- Python多线程学习
- Python多线程学习
- 多线程学习-使用临界区进行线程同步--发布日期:2008-07-17 16:38
- .Net学习难点讨论系列14 – 多线程下的进程同步(线程同步问题总结篇)
- 多线程学习系列:(四)线程同步基础下
- Python多线程学习
- 多线程开发学习笔记之线程同步——信号量
- 多线程学习系列:(三)线程同步基础上
- Python模块学习 ---- threading 多线程控制和处理
- linux多线程学习笔记四---线程同步之互斥锁、读写锁和条件变量