# -*- coding: utf -8 -*-
import threading,time
g_num = 0
# 创建一个互斥锁,默认都是没有上锁的
mutex = threading.Lock()
def test1(num):
global g_num
# 上锁,如果之前没有被上锁,那么此时上锁成功
# 如果上锁之前,已经被上锁了,那么此时会堵塞在这里,直到这个锁被解开为止
mutex.acquire()
for i in range(num):
g_num += 1
# 解锁
mutex.release()
print("---in test1 num = % s" % str(g_num))
def test2(num):
global g_num
mutex.acquire()
for i in range(num):
g_num += 1
mutex.release()
print("--in test2 num = % s" % str(g_num))
def main():
# target 指定将来的线程从哪个 函数名 开始,args指将来线程要传入的数据(参数必须是元祖)
t1 =threading.Thread(target=test1,args=(100000,))
t2 =threading.Thread(target=test2,args=(100000,))
t1.start()
# time.sleep(1)
t2.start()
# time.sleep(1)
if __name__ == "__main__":
main()
02-2多任务threading全局变量上锁和解锁
最新推荐文章于 2022-02-11 14:10:11 发布