python多线程认识

python多线程认识,第1张

背景:

之前进程,线程理论不是很OK,感觉用的少,所以忽略了很多,其实在一些场景中[比如搭建某个环境和知晓某个东西的运行机制期待优化],一些基础术语理解很关键。

参考:

彻底搞懂 python进程和线程_哔哩哔哩_bilibili

Python线程池及其原理和使用(超级详细) - 想总结却停留不前? - 博客园 (cnblogs.com)

Python多线程与多线程中join()的用法 - cnkai - 博客园 (cnblogs.com)

过程:
1:简述进程和线程的区别和应用场景
answer:
进程是 *** 作系统资源分配的最小单元[进程为线程提供资源]
线程是CPU执行的最小单元[真正在工作]
一个进程中可以有多个线程,同一个进程中的线程可以共享此进程中的资源
python中因为GIL存在:
多线程适用于i/o密集型[读取内存,磁盘,网络,具体如爬虫]
i/o密集型同时运行的任务不多
数据库的存储介质是磁盘,简单将数据库 *** 作理解为IO密集型
多进程适用于CPU密集型[正则,解密,加密]

2:什么是GIL锁
GIL是python解释器特有的一个全局解释器锁,控制一个进程中同义时刻只有一个线程可以被CPU调度
列表,字典常见对象的线程数据安全,得益于GIL
python规避并发问题的一种机制,保证一个进程同一时刻中只有一个线程在执行
解决多线程之间的数据完整性和状态同步问题

3:多线程的一些理解[不包含demo,将练习的demo换为文字]
--3-1
如果开辟一个子线程A,默认会创建一个进程,主线程里面会创建子线程A
主线程可以选择守护模式[主线程等待子线程执行完毕后,程序都结束]
和非守护模式[主线程执行完毕后子线程不管是否执行完毕,程序都结束]
主线程是异步执行[不会等待子线程A]
我们可以使用join来等待子线程A执行完毕后再继续执行主线程
--3-2
子线程A,B之间因为进程之间线程资源共享的关系,可能会导致线程不安全的问题出现,
这时我们引入了锁机制来保证线程安全,
python中有RLock和Lock锁可以使用,区别是一个支持嵌套锁和不支持,
效率略微有差别[根据场景来看],看起来嵌套锁用的多一点
--3-3
线程池的使用,避免创建太多子线程影响效率


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/716069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存