多线程回顾-全局解释器锁GIL

本文探讨了Python中线程的实现原理,重点讲解了全局解释器锁(GIL)的作用及其对线程并发执行的影响。通过示例代码演示了GIL在遇到IO操作时的释放机制,并通过一个简单的线程不安全的计数增减实验,展示了GIL如何限制多线程程序的实际性能。
import threading
# 全局解释器锁 GIL
# python 一个线程对应于c语言中的一个线程
import dis

# def add(a):
#     a = a+1
    # return a
# 反编译
# print(dis.dis(add))



# GIL根据执行的字节码行数、时间片,GIL在遇到IO操作主动释放
# GIL释放例子

total = 0
def add():
    global total
    for i in range(10000000):
        total +=1 # 线程不安全

def desc():
    global total
    for i in range(10000000):
        total -=1

thread1 = threading.Thread(target=add)
thread2 = threading.Thread(target=desc)

thread1.start()
thread2.start()

thread1.join()
thread2.join()

print(total)
# 167499
# 1518478

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学渣王菜菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值