#-*-coding:utf-8-*- '''若是多个线程共同对某个数据修改,则可能出现不可预料的结果,为了保证数据的正确性, 须要对多个线程进行同步。 线程同步所使用的的方法: Lock RLock 以上两个对象,均有acquire和release方法,对于每次只容许一个线程操做的数据能够 将其放在acquire和release方法之间. Lock:若是一个县城连续两次进行acquire操做,若是第一次acquire以后没有release, 则第二次acquire将挂起线程,致使Lock永远不会release,致使死锁。 Rlock:容许一个线程所赐acquire,其内部经过counter变量维护线程acquire次数,而且 在每次acquire操做都有一个release操做对应,全部release操做完成后其他对象才能申请Rlock。 ''' #线程同步的演示 import threading mylock=threading.RLock() num=0 class MyThread(threading.Thread): def __init__(self,name): threading.Thread.__init__(self,name=name) def run(self): global num while True: mylock.acquire() print("%s locked,Number:%d"%(threading.current_thread().name,num)) if num>4: mylock.release() print("%s released,Number:%d"%(threading.current_thread().name,num)) break num+=1 print('%s released,Number:%d'%(threading.current_thread().name,num)) mylock.release() if __name__=="__main__": thread1=MyThread('线程1') thread2=MyThread('线程2') thread1.start() thread2.start()