import threading
"""
如何解决多线程共享全局变量的问题?
用锁,先获取锁:lock.acquire(),处理共享全局变量,释放锁:lock.release();另一个线程才能获取锁,处理全局变量
注意:加锁,只加到必要的位置:改变全局变量的位置,没有的地方不加,比如打印等等
加几把锁,看处理几个全局变量
查看当前线程数: print(len(thread.enumerate())) 是数,所以用len()。
thread.enumerate() 打印的是线程列表
"""
value = 0
lock = threading.Lock()
def deal_value():
global value
lock.acquire()
for i in range(3):
value += 1
lock.release()
print("value: %s" % value)
def main():
print("main value: %s" % value)
for x in range(5):
t = threading.Thread(target=deal_value)
t.start()
print("main value: %s" % value)
if __name__ == '__main__':
main()
# main value: 0
# value: 3
# value: 6
# value: 9
# value: 12
# value: 15
# main value: 15
多线程Threading 锁Lock
最新推荐文章于 2023-01-08 23:25:36 发布