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

多线程-2-线程间通信

目录

共享变量

队列


在 Python 中,实现线程间通信有多种方法,主要依赖 threading 和 queue 模块。这些机制可以帮助你安全地在多个线程之间传递数据和同步操作。

共享变量

由于同一进程中的所有线程共享内存空间,因此最直接的通信方式就是使用全局或共享的变量。但是,为了防止多个线程同时修改数据而导致的竞态条件(Race Condition),必须使用同步原语来保护数据。

队列

这是 最常用且推荐 的线程间通信方式。 queue 模块提供了线程安全的队列类(如 Queue , LifoQueue , PriorityQueue ),它们内部已经处理好了所有的锁定机制,让你无需手动管理锁。

# 通过queue的方式进行线程同步
import threading 
from time import sleep
import time
import queuedef get_detail_html(queue):while True:print("get detail html started")sleep(2) data = queue.get()print(f"get detail html end, data: {data}")def get_detail_url(queue):while True:print("get detail url started")sleep(2)for i in range(20):queue.put(i)print(f"get detail url end, size: {queue.qsize()},queue:{queue}")if __name__ == "__main__":detail_queue = queue.Queue()t1 = threading.Thread(target=get_detail_url, args=(detail_queue,))for i in range(15):t = threading.Thread(target=get_detail_html, args=(detail_queue,))t.start()start_time = time.time()t1.start()# 使用join方法使得主线程等待线程执行完成   否则主线程不会等待子线程,就会导致,子线程执行中的时候,主线程执行时间加减t1.join()# 任务结束detail_queue.task_done()# 使用queue提供的方法管理其中的所有线程detail_queue.join()end_time = time.time()print(end_time - start_time)
http://www.dtcms.com/a/286673.html

相关文章:

  • 推荐算法召回:架构理解
  • 【RK3576】【Android14】开发环境搭建
  • Windows 下 VS2019 编译 libevent-2.1.10 库
  • React 实现人员列表多选、全选与取消全选功能
  • 大疆司空2私有化部署报错解决方案
  • 谷歌浏览器Chrome的多用户配置文件功能
  • Python分组柱形图绘制全攻略
  • 题解:CF1866D Digital Wallet
  • 熔断和降*的区别
  • 使用pt-toolkit工具包进行MySQL性能优化实战指南
  • 算法训练营day24 回溯算法③ 93.复原IP地址 、78.子集、 90.子集II
  • AWS SSL证书无缝迁移完整指南 - 零业务中断方案
  • Python 进程间通信:TCP安全加密数据传输
  • H3CNE小小综合实验
  • 模拟数据生成---使用NGS数据模拟软件VarBen
  • SLM343CK-DG Sillumin数明半导体高性能LED驱动芯片 抗干扰+耐高温 车载照明专用
  • 二叉树(建立 + 遍历 + 拓展)
  • 外部DLL创建及使用
  • 灵巧手(具身智能入门十一)
  • if (a == 1 a == 2 a == 3)返回true的问题思考
  • NVIDIA 驱动安装失败问题排查与解决(含离线 GCC 工具链安装全过程)
  • MySQL组内拼接group_concat函数
  • MyUI会员排名VcMember组件文档
  • Java与Vue技术搭建的SRM招标采购管理系统,提供源码,涵盖招标、投标、评标全流程,助力企业高效规范采购管理
  • spring-cloud微服务部署-feign服务间调用
  • NFS读写性能评估与优化指南(下)
  • 二叉搜索树:高效的查找结构
  • 自学力扣:最长连续序列
  • python-pptx 的layout 布局
  • CCF编程能力等级认证GESP—C++1级—20250628