Python 多线程 Event

本文介绍了Python中多线程的概念,强调了线程在进程中的角色和数据共享。推荐使用Threading模块而非Thread模块,因为它支持守护线程和更丰富的同步原语。重点讲述了Threading模块中的Event方法,包括Event.wait()、Event.set()、Event.clear()和Event.isSet(),并提供了一个简单的捉迷藏游戏示例来说明其用法。
摘要由CSDN通过智能技术生成

首先需要明确一下进程和线程的概念。

进程(有时被称为重量级进程)是程序的一次执行。每个进程都有自己的地址空间、内存、数据宅及其他记录其运行轨迹的辅助数据。操作系统管理在其运行的所有进程,并为这些进程公平的分配时间,进程也可以通过fork和spawn操作来完成其他的任务。

线程(有时被称为轻量级进程)跟进程有些相似。不同的是,所有的线程运行在同一个进程中,共享相同的运行环境,我们可以想象成在主进程或者主线程运行中运行的迷你进程。一个进程中有多个线程共享通过一片数据空间,所以线程之间可以比进程之间更方便的共享数据及相互通信。

线程一般都是并发执行的,也就是因为这种并行和数据共享的机制使得多个任务的合作变的可能。但是,在但CPU得系统中,做到真正的并行是不可能的,每个线程会被安排成每次只运行一小会儿,然后将CPU让出来,让其他线程执行,在进程的整个运行过程中,每个线程都只做自己的事,在需要的时候跟其他的线程共享运行的结果。

同时在共享数据的时候注意竞态条件等问题。


在Python中提供给我们两个用于多线程编程的模块:Thread模块和Threading模块

不过我们建议使用Threading模块,原因是,Threading模块更高级别,更高级别的Threading模块更为先进。对于线程的支持更为先进,同时,使用Thread模块里面的属性有可能会与Threading模块出现冲突,其次,低级别的Thread模块的同步原语很少,Threading模块确有很多。

不建议使用Thread模块的另一个原因是,Thread模块不支持守护线程。当主线程 退出时,所有的子线程不论他们是否还在工作,都会被强行退出。</

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值