这是多个进程在修改同一个变量是产生的错误,此时需要,使用线程锁,将修改变量的部分代码锁住
import threading
index = 0
def test():
global index
lock.acquire()
# 开启锁
try:
for i in range(1000000):
index += 1
finally:
lock.release()
# 关闭锁
if __name__ == '__main__':
# 定义一个线程锁
# 注意修改同一个变量的线程要使用同一个锁
lock = threading.Lock()
# 开启多个线程
for i in range(10):
t = threading.Thread(target=test)
t.setDaemon(True)
t.start()
# 等待所有进程下载完成
# 主进程
index_threading = threading.current_thread()
# 遍历所有进程
for t in threading.enumerate():
if t is index_threading:
continue
t.join()
print(index)