前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python多线程(下)

Python多线程(下)

作者头像
罗罗攀
发布于 2022-01-11 08:24:53
发布于 2022-01-11 08:24:53
34000
代码可运行
举报
运行总次数:0
代码可运行

前言

上节课我们分享了Python多线程的基础语法,以及GIL的相关概念,这节课我们重点讲解一个知识点,就是多线程的数据安全问题。

数据安全问题

我们首先来举一个例子,这里定义两个函数,一个是自加1,一个时自减1,按正常的逻辑来说,最后这个值应该是0,但是程序每次运行的结果都不一样,有正数,也有负数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import threading

num = 0


def add():
    global num
    for i in range(10000000):
        num += 1


def sub():
    global num
    for i in range(10000000):
        num -= 1


t1 = threading.Thread(target=add)
t2 = threading.Thread(target=sub)
t1.start()
t2.start()
t1.join()
t2.join()
print(num)

这就是多线程的数据安全的问题,我简单解释一下,因为线程会在两个函数中来回切换,好比在add函数中,刚准备加1时,程序被打断,跳到了sub函数中继续执行,这就会导致num值的改变。

我们举一个现实中的案例,很多人抢一张火车票,如果是多线程,当一个人在抢票时,突然切换到另外一个人买票,他买到了,然后又返回到第一个人,他这边还是显示的还有一张票,但其实后台已经没票了。

这时我们就可以手动加锁来解决这样的问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import threading

num = 0
lock = threading.Lock()


def add():
    lock.acquire()
    global num
    for i in range(10000000):
        num += 1
    lock.release()


def sub():
    lock.acquire()
    global num
    for i in range(10000000):
        num -= 1
    lock.release()


t1 = threading.Thread(target=add)
t2 = threading.Thread(target=sub)
t1.start()
t2.start()
t1.join()
t2.join()
print(num)

acquire函数就是申请锁,release就是释放锁,这样就能保证数据的安全。

今天的分享就到这了,我们下期再见~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022.01.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
14、【实战中提升自己】 防火墙篇之VPN部署–L2TP over IPSEC
说明:在VPN上面,我们希望与分部建立VPN,保证与分部的财务部正常通信,另外还提供L2TP Over ISPEC功能,方便远程接入访问内部服务器等。当然我们也可以做详细的控制,根据需求而定。
ICT系统集成阿祥
2024/12/03
4300
14、【实战中提升自己】 防火墙篇之VPN部署–L2TP over IPSEC
一文读懂IPSec
IPSec(互联网协议安全)是一个安全网络协议套件,用于保护互联网或公共网络传输的数据。IETF在 1990 年代中期开发了 IPSec 协议,它通过 IP网络数据包的身份验证和加密来提供 IP 层的安全性。 IPSec简介 IPSec 可为通信两端设备提供安全通道,比如用于两个路由器之间以创建点到点 VPN,以及在防火墙和 Windows 主机之间用于远程访问 VPN等。IPSec可以实现以下4项功能: 数据机密性:IPSec发送方将包加密后再通过网络发送,可以保证在传输过程中,即使数据包遭截取,信息也无
SDNLAB
2022/07/08
13.9K0
一文读懂IPSec
15、【实战中提升自己】 防火墙完结篇之VPN部署–IPSEC VPN,包括与L2TP共存问题
(1)为什么需要部署Gre Over ipsec 说明:VPN的需求其实非常简单,就是与分部进行安全的访问,当然只允许财务部之间的互访【这个根据需求决定】,这路需要注意,除了这个以外,还有无线AP需要注册到总部来,这个需要通过VPN进行加密连接,但是这里总部是固定IP,而分部则是PPPOE拨号,这个只能通过动态策略模板来进行部署。所以这里需要实施 Gre Over ISPEC。
ICT系统集成阿祥
2024/12/03
3240
15、【实战中提升自己】 防火墙完结篇之VPN部署–IPSEC VPN,包括与L2TP共存问题
CentOS搭建VPN服务,一次性成功,收藏了
虚拟私人网络(英语:Virtual Private Network,缩写为VPN)是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内部网的网络讯息。它利用已加密的通道协议(Tunneling Protocol)来达到保密、发送端认证、消息准确性等私人消息安全效果。这种技术可以用不安全的网络(例如:互联网)来发送可靠、安全的消息。需要注意的是,加密消息与否是可以控制的。没有加密的虚拟专用网消息依然有被窃取的危险。
民工哥
2021/02/23
53.5K2
CentOS搭建VPN服务,一次性成功,收藏了
网络安全实验14 配置IPSec VPN,实现私网之间的隧道互访
IPSec (Internet Protocol Security) 是一种开放标准的框架结构,用于为IP网络通信提供安全服务,确保数据的机密性、完整性和来源认证。它通常由两个主要部分组成:Authentication Header (AH) 和 Encapsulating Security Payload (ESP),分别负责数据的认证和加密。IPSec VPN 利用这些安全机制,使远程用户或分支办公室能够通过不安全的公共网络(如互联网)安全地访问企业内部网络资源。
90后小陈老师
2024/06/18
5.1K0
网络安全实验14 配置IPSec VPN,实现私网之间的隧道互访
Centos7.2下部署L2TP/IPsec类型的VPN环境记录
之前在机房部署了PPTP的V**环境,后面发现有的同事使用的mac本不能连接PPTP,原因是IOS10.0系统以后就不支持PPTP的V**了,于是打算将V**更换L2TP类型的。 L2TP是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处: 1)PPTP要求网络为IP网络,L2TP要求面向数据包的点对点连接; 2)PPTP使用单一隧道,L2TP使用多隧道; 3)L2TP提供包头压缩、隧道验证,而PPTP不支持。 4)L2TP的可应用性更为广泛,很多路由不支持PPTP穿透
洗尽了浮华
2022/03/28
8.7K0
Centos7.2下部署L2TP/IPsec类型的VPN环境记录
网络安全技术:防火墙、VPN、入侵检测基础
防火墙是 网络边界的第一道防线 , 它部署在网络边界上的设备或功能,用来控制网络访问、拦截非法通信。它可以是一个独立设备,也可以内嵌在路由器或操作系统中。
神的孩子都在歌唱
2025/04/11
2490
网络安全技术:防火墙、VPN、入侵检测基础
10张图片教会你配置ipsec vpn
跨地区联网办公最经济实惠的方式,莫过于ipsec vpn,笔者此前也不止一次地写过ipsec vpn的配置方法,但是总有网友说太复杂了,今天我非要给各位看官来个简单版的教程,只用10张图片,就能展示华为防火墙配通外网,并且配通总部与分支机构的ipsec vpn。
IT狂人日志
2023/12/14
8830
10张图片教会你配置ipsec vpn
近期研究VPN的一些记录(OpenVPN,pptp,l2tp)
近期由于一些需要(特别是上Google),研究了下在VPS上搭建VPN服务器的方法。其中遇到一些坑,顺带记下来以备下次使用。
owent
2023/03/06
6.6K0
网络安全实验15 配置GRE over IPSec VPN,实现私网之间通过隧道安全互访
90后小陈老师
2024/06/18
1.4K0
网络安全实验15 配置GRE over IPSec VPN,实现私网之间通过隧道安全互访
什么是虚拟专用网以及有哪些实现方式(VPN篇)
虚拟专用网(VPN)相信IT人员是最熟悉的了,就算是一个不懂技术的多多少少也听过这个技术名词,特别是去年疫情其间流行的远程办公,大部分就通过VPN技术实现的,下面博主用实际场景介绍来带你走进新的知识点篇,企业组网常见的VPN系列。
网络之路一天
2024/01/08
9490
什么是虚拟专用网以及有哪些实现方式(VPN篇)
这些VPN知识你肯定没听过
在VPN出现之前,企业分支之间的数据传输只能依靠现有物理网络(例如Internet)。由于Internet中存在多种不安全因素,报文容易被网络中的黑客窃取或篡改,最终造成数据泄密、重要数据被破坏等后果。
ICT系统集成阿祥
2024/12/03
2450
这些VPN知识你肯定没听过
结合配置、抓包来分析IKE/IPSec的整个协商过程
这里主要讲解IKEV1的版本,在V1版本中有两个模式,一个主模式,一个野蛮模式(也称为积极模式),下面就以上一篇的拓扑跟配置为基础,来通过抓包来分析,先从IKE的主模式开始。
网络之路一天
2024/01/08
4.8K0
结合配置、抓包来分析IKE/IPSec的整个协商过程
华为防火墙和飞塔防火墙建立IPSec隧道,使两地局域网互通
以前写过总部与两个分支机构、三台华为防火墙配置ipsec,都是同一个品牌,相对来说配置比较简单。
IT狂人日志
2022/05/18
1.3K0
华为防火墙和飞塔防火墙建立IPSec隧道,使两地局域网互通
华为ensp中路由器IPSec VPN原理及配置命令(超详解)
虚拟专用网络(VPN)通过在您的设备和远程服务器之间创建加密隧道来工作。该隧道可保护您的互联网流量免受窥探,即使您使用的是公共 Wi-Fi 网络。
神秘泣男子
2024/06/03
4K0
华为ensp中路由器IPSec VPN原理及配置命令(超详解)
当GRE遇上IPSec后,安全性终于有了保障
BJ_FW身后有一个服务器,CS_FW与CD_R后面的client需要访问这个服务器,希望不把服务器暴露在公网上面,能实现的那就只有GRE与IPSec了,但是GRE没有安全性保障,IPSec有安全性,那能不能把GRE与IPSec结合起来一起使用呢?下面先回顾下GRE的配置,把各个点之前打通,然后在这个基础上面尝试下用IPSec部署,看看有什么样的效果。
网络之路一天
2024/01/08
4980
当GRE遇上IPSec后,安全性终于有了保障
防火墙L2TP over IPSec VPN (Window7终端拨号)典型配置
Comware V7防火墙设备作为VPN总部,电脑客户、移动终端通过中间跨越运营商网络拨入L2TP over IPSec VPN实现访问内网服务器的需求。
网络技术联盟站
2020/05/06
2.2K0
防火墙L2TP over IPSec VPN (Window7终端拨号)典型配置
隧道保活超时或协商超时,该如何解决?
华为防火墙,配置了L2TP Over IPSec,但是用客户端远程拨入的时候,显示警告:“隧道保活超时或协商超时”
IT狂人日志
2023/05/29
1.3K0
隧道保活超时或协商超时,该如何解决?
H3C交换机、路由器、防火墙常用指令,详细分类,一篇整理!
ICT系统集成阿祥
2025/05/27
3800
H3C交换机、路由器、防火墙常用指令,详细分类,一篇整理!
网络安全实验13 配置Client-Initiated场景下的L2TP VPN,实现移动办公用户访问企业内网资源
地址:https://www.leagsoft.com/doc/article/103107.html
90后小陈老师
2024/06/07
6620
网络安全实验13 配置Client-Initiated场景下的L2TP VPN,实现移动办公用户访问企业内网资源
推荐阅读
相关推荐
14、【实战中提升自己】 防火墙篇之VPN部署–L2TP over IPSEC
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档