python threading.lock()无法正常工作

时间:2015-09-30 07:02:34

标签: python multithreading

我创建了一个修改全局变量的函数,每次增加1。然后我创建10个线程来调用这个函数;每个线程将调用该函数10次。但是,变量的最终值与在一个线程中调用函数100次不同。我如何使用threading.lock有什么不对吗?以下是我的代码:

num=0
lockOne=threading.Lock()
def subPro():
    global num
    lockOne.acquire()
    num+=1
    lockOne.release()

1 个答案:

答案 0 :(得分:0)

您可能没有等待线程完成。您必须使用Thread.join

import threading

num=0
lockOne=threading.Lock()
def subPro():
    global num
    lockOne.acquire()
    num+=1
    lockOne.release()

def run():
    for i in range(10):
        subPro()

# Start all threads
threads = [threading.Thread(target=run) for x in range(10)]
for thread in threads:
    thread.start()
# Wait for completion
for thread in threads:
    thread.join()
print(num)