import threading import time g_num = 0 def test1(num): global g_num lock.acquire() # 上锁 for i in range(num): g_num += 1 lock.release() # 解锁 print('test1-->', g_num) def test2(num): global g_num lock.acquire() for i in range(num): g_num += 1 lock.release() print('test2-->', g_num) lock = threading.Lock() # 创建一个锁 if __name__ == '__main__': t1 = threading.Thread(target=test1, args=(1000000,)) t2 = threading.Thread(target=test2, args=(1000000,)) t1.start() t2.start()
时间: 2024-04-27 11:20:05 浏览: 82
这是一个 Python 多线程程序,其中定义了两个函数 test1 和 test2。这两个函数都会对全局变量 g_num 进行加 1 操作,并且在操作前会先获取锁,在操作完成后再释放锁。
在主程序中,创建了两个线程 t1 和 t2,分别调用 test1 和 test2 函数,并传入参数 1000000。然后启动这两个线程,让它们并行地执行。
由于这两个线程都会对 g_num 进行操作,而且操作不是原子性的,因此需要使用锁来保证线程安全,避免多个线程同时修改同一个变量造成数据混乱。
阅读全文