python原子性_通俗易懂:说说 Python 里的线程平安、原子操作

首发于微信民众号:Python编程时光

在并发编程时,若是多个线程接见统一资源,我们需要保证接见的时刻不会发生冲突,数据修改不会发生错误,这就是我们常说的 线程平安 。

那什么情况下,接见数据时是平安的?什么情况下,接见数据是不平安的?若何知道你的代码是否线程平安?要若何接见数据才气保证数据的平安?

本篇文章会逐一回覆你的问题。

1. 线程不平安是怎样的?

要搞清楚什么是线程平安,就要先领会线程不平安是什么样的。

好比下面这段代码,开启两个线程,对全局变量 number 各自增 10万次,每次自增 1。

from threading import Thread, Lock

number = 0

def target():

global number

for _ in range(1000000):

number += 1

thread_01 = Thread(target=target)

thread_02 = Thread(target=target)

thread_01.start()

thread_02.start()

thread_01.join()

thread_02.join()

print(number)

正常我们的预期输出效果,一个线程自增100万,两个线程就自增 200 万嘛,输出肯定为 2000000 。

可事实却并不是你想的那样,不管你运行若干次,每次输出的效果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值