Python threading.lock()不起作用



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

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

您可能没有等待线程完成。你必须使用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)

最新更新