学Python,用RPA
艺赛旗RPA2020.1版本 正在免费下载使用中,欢迎下载使用
www.i-search.com.cn/index.html?from=line1
#!/usr/bin/env Python3
author = ‘未昔/AngelFate’
date = ‘2020/5/31 20:24’
from threading import Thread, Lock # 导入互斥锁Lock
num = 0
def work():
global num
l.acquire() # 这里表示调用互斥锁上锁方法,如果work函数先运行l.acquire的话,那么后边的程序就不能再修改和使用变量num。直到将其解锁后才能使用。
for i in range(1000000):
num += 1
print(‘work的num是%d’ % num)
l.release() # 这里表示调用互斥锁解锁方法。
def works():
global num
l.acquire() # 这里表示调用互斥锁上锁方法。
for i in range(1000000):
num += 1
print(‘works的num是%d’ % num)
l.release() # 这里表示调用互斥锁解锁方法。
l = Lock() # 实例化互斥锁,互斥锁是为了保护子线程不争抢数据而使用的一个类。
t = Thread(target=work)
tt = Thread(target=works)
t.start()
tt.start()
print(‘最后的num值是%d’ % num) # 输出最后的结果
「Python 进阶」 互斥锁
#!/usr/bin/env Python3
author = ‘未昔/AngelFate’
date = ‘2020/5/31 20:24’
from threading import Thread, Lock # 导入互斥锁Lock
num = 0
def work():
global num
l.acquire() # 这里表示调用互斥锁上锁方法,如果work函数先运行l.acquire的话,那么后边的程序就不能再修改和使用变量num。直到将其解锁后才能使用。
for i in range(1000000):
num += 1
print(‘work的num是%d’ % num)
l.release() # 这里表示调用互斥锁解锁方法。
def works():
global num
l.acquire() # 这里表示调用互斥锁上锁方法。
for i in range(1000000):
num += 1
print(‘works的num是%d’ % num)
l.release() # 这里表示调用互斥锁解锁方法。
l = Lock() # 实例化互斥锁,互斥锁是为了保护子线程不争抢数据而使用的一个类。
t = Thread(target=work)
tt = Thread(target=works)
t.start()
tt.start()
print(‘最后的num值是%d’ % num) # 输出最后的结果
这里需要明白,主线程和子线程是同时进行的,因为创建子进程在前,最后输出再后,所以当最后线程输出的时候,子线程还在运行.
最后的num值是271556
work的num是1000000
works的num是2000000