python同步锁

# 锁通常被用来实现对共享资源的[同步]访问。
# 为每一个共享资源创建一个Lock对象,
# 当你需要访问该资源时,调用acquire方法来获取锁对象(如果其它线程已经获得了该锁,则当前线程需等待其被释放),
# 待资源访问完后,再调用release方法释放锁:

import time
import threading

def addNum():
    global num #在每个线程中都获取这个全局变量
    #num-=1
    # 获得锁锁定
    lock.acquire()
    temp=num
    time.sleep(0.001)
    num =temp-1  # 对此公共变量进行-1操作
    lock.release()
    # 释放锁,让别的线程继续用

num = 100  #设定一个共享变量

thread_list = []

# 增加线程同步锁
lock = threading.Lock()

for i in range(100):
    t = threading.Thread(target=addNum)
    t.start()
    thread_list.append(t)

for t in thread_list: #等待所有线程执行完毕
    t.join()

print('Result: ', num)

  

posted @ 2017-09-21 13:32  Adamanter  阅读(268)  评论(0编辑  收藏  举报