我创建了一个修改全局变量的函数,每次增加1。然后我创建10个线程来调用这个函数;每个线程将调用该函数10次。但是,变量的最终值与在一个线程中调用函数100次不同。我如何使用threading.lock
有什么不对吗?以下是我的代码:
num=0
lockOne=threading.Lock()
def subPro():
global num
lockOne.acquire()
num+=1
lockOne.release()
答案 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)