标签:Python线程锁
多线程的优势:
可以同时运行多个任务
但是当多个线程同时访问共享数据时,可能导致数据不同步,甚至错误!
so,不使用线程锁, 可能导致错误
购买车票--线程锁
[root@~]# cat test.py
#-*- coding:utf-8 -*- import threading import time tickets = range(1,10) def buy_ticket(station): while True: mylock.acquire() #加线程锁 if len(tickets) == 0: mylock.release() #释放线程锁, 不要带锁结束线程 break; ticket = tickets[-1] time.sleep(1) print "%s买到票No.%d" %(station, ticket) del tickets[-1] mylock.release() #释放线程锁 time.sleep(1) class MyThread(threading.Thread): def __init__(self, station): threading.Thread.__init__(self) self.station = station #线程启动后,会执行self.run()方法 def run(self): buy_ticket(self.station) # 创建一个线程锁 mylock = threading.Lock() # 创建新线程t1 t1 = MyThread("广州") t2 = MyThread("深圳") t1.start() #启动线程 t2.start() print "线程启动完毕" print 'end.'
结果:
[root@~]# python test.py
标签:Python线程锁
原文地址:http://blog.51cto.com/1767340368/2094341