当前位置: 首页 > news >正文

[python] lock 解决线程安全问题

用法1 try-finally 模式

import threading
import timelock = threading.Lock()lock.acquire()try:##do something
finally:lock.release()

用法2  with 模式

import threading
import timelock = threading.Lock()with lock:##do something

import threading
import timelock = threading.Lock()class Account:def __init__(self, balance):self.balance = balancedef draw(account, amount):with lock:if account.balance >= amount:print(threading.current_thread().name, "取钱成功")time.sleep(0.1)account.balance -= amountprint(threading.current_thread().name, f"余额{account.balance}")else:print(threading.current_thread().name, "取钱失败,余额不足")if __name__ == "__main__":account = Account(1000)ta = threading.Thread(target=draw, args=(account, 800), name="ta")tb = threading.Thread(target=draw, args=(account, 800), name="tb")ta.start()tb.start()

来自 

Python线程安全问题以及解决方案_哔哩哔哩_bilibili

相关文章:

  • 信号与系统速成-1.绪论
  • Java面试八股(Java基础,Spring,SpringBoot篇)
  • json中对象转字符串和字符串转对象的方法
  • 【Linux系统移植】Cortex-A8 Linux系统移植(超详细)
  • Next.js 布局(Layout)与模板(Template)深度解析:从原理到实战
  • Vue模板语法
  • 大模型应用开发之评估
  • LeetCode 75. 颜色分类 - 双指针法高效解决(Java实现)
  • 【评测】推理和微调 “GTE文本向量-中文-通用领域-base”模型
  • [嵌入式实验]实验二:LED控制
  • 公司数据不泄露,DeepSeek R1本地化部署+web端访问+个人知识库搭建与使用
  • 19、Python字符串高阶实战:转义字符深度解析、高效拼接与输入处理技巧
  • 网络安全的守护者:iVX 如何构建全方位防护体系
  • 【Linux】线程概念
  • 代购系统数据中台搭建指南:3 步实现订单、物流、用户行为的全链路数字化
  • 大模型在老年性白内障预测及诊疗方案中的应用技术方案
  • python模块和包
  • 搭建frp内网穿透
  • 可视化图解算法47:包含min函数的栈
  • 重温经典算法——冒泡排序
  • 自己做电台直播的网站/百度浏览器入口
  • 一般通过486/seo整站怎么优化
  • Wordpress 判断url存在/网页优化seo广州
  • 阿里巴巴国际站可以做网站吗/百度搜索优化建议
  • 气象网站建设管理的不足/软文营销网
  • 重庆市政府网站管理办法/如何策划一个营销方案