栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python多线程学习笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python多线程学习笔记

进程

是一个执行中的程序

每一个进程都拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据

操作系统管理其他上所有进程的执行,并未这些进程合理的分配时间

进程可以通过派生(fork或者spawn)新的进程来执行其他任务。

线程

在同一个进程下执行,并共享相同的上下文

一个进程中的各个线程与主线程共享一片数据空间

线程包括开始、执行顺序和结束三部分

它可以被抢占(中断)和临时挂机(睡眠)----让步

并发

是一种属性--程序、算法或者问题的属性

并发只是并发问题的可能方法之一

如果两个事件互不影响,则两个事件是并发的。

对多核的利用

单核CPU系统中,不存在真正的并发

GIL-全局解释器锁

GIL强制在任何时候只有一个线程可以执行Python代码

I/O密集型应用与CPU密集型应用

GIL执行顺序

1、设置GIL

2、切换进一个线程去执行

3、执行下面操作之一:

ˇ指定数量的字节码指令     ˇ线程主动让出控制权(可以调用time.sleep(0)来完成)

4、把线程设置为睡眠状态

5、解锁GIL

6、重复上面步骤。

实现一个线程

用threading模块代替thread模块

用threading.Tread创建线程

start()启动线程

join()挂起线程

threading模块对象:

Thread 表示一个执行线程的对象

Lock 锁原语对象(和)

RLock 可重入锁对象,使单一线程可以获得已持有的锁

Condition 条件变量对象,使得一个线程等待另一个线程满足特定的条件,比如改变状态或者某个数值

Event 条件变量的通用版本,任意数量的线程等待某个事件的发生,在该事件发生后所有线程将被激活

Semaphore 为线程间共享的有限资源提供一个计数器,如果没有可用资源时候会阻塞

BoundedSemaphore 与Semaphore相似,不过它不允许超过初始值

Timer 与Thread相似,不过它要在运行前等待一段时间

Barrier 创建一个“障碍”,必须达到指定数量的线程后才可用继续。

Thread对象数据属性

name 线程名  ident线程的标识符 deamon表示这个线程是否是守护线程

Thread对象方法:略

多线程中的锁实现

lock()   添加锁mylock.acquire()      释放锁 mylock.release()  产生死锁

Rlock() 同一线程中可用重复锁

Condition()

线程的调度和优化

线程池 在multiprocessing.dummy

ThreadPoolExecutor()

进程

fork 只在Unix中使用

使用multiprocessing实现多进程代码

用multiprocessing.Process创建进程

start()启动进程                                      join()挂起进程

os.getpid()获得进程ID

进程之间的通信

通过Queue、Pipes等实现进程之间的通信

.terminate()结束  Queue共享数据

多进程中的锁

lock Rlock Condition





转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/220179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号