「Python 进阶」 互斥锁

学Python,用RPA

艺赛旗RPA2020.1版本 正在免费下载使用中,欢迎下载使用

www.i-search.com.cn/index.html?from=line1

#!/usr/bin/env Python3

-- coding: utf-8 --

@Software: PyCharm

@virtualenv:workon

@contact: 1040691703@qq.com

@Desc:Code descripton

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

-- coding: utf-8 --

@Software: PyCharm

@virtualenv:workon

@contact: 1040691703@qq.com

@Desc:Code descripton

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

Process finished with exit code 0
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值