线程
进程:
互斥锁
进程之间的数据的共享模块
关于数据安全的问题
进程池:(自己了解,线程部分还会讲)
Multiprocessing中的from multiprocessing import pool不常用了
事件/信号量/管道 (太不常用了,所以不讲了)
线程的概念(面试重点)
认识线程模块
线程是进程当中的一个单位
进程是计算机当中最小的资源分配单位 (进程 是圈资源)
线程是计算机中被CPU调度的最小单位
开启进程 关闭进程 切换进程都需要花时间
电脑的资源有限
开启过多的进程会导致计算机奔溃
理论线程服务上限:
CPU核数*2
进程主要是进行数据隔离
两个不同的服务器端
并发:同一时刻能同时接受多个客户端的请求
线程:
轻量级进程
不做数据隔离
在同一个进程中的多个线程是可以共享数据的
线程的开启/销毁/切换都比进程高效很多
多个进程可以利用多核
多个线程也可以利用多核
多进程和多线程的区别:
进程 数据隔离 开销大
线程 数据共享 开销小
Python 当中的多线程
Cpython 解释器 中的GIL锁
Jpython pypy解释器中的多线程是可以访问多核的
利用多核 意味着 多个CPU可以同时计算线程中的代码
_thread和threading模块
Threadinghe和 multiprocessing 先有threading
Threading 没有池的功能
Multiprocessing 完全模仿threading模块
实现了池的功能
Concurrent .futures
实现了线程池/进程池
在线程部分不需要通过import来为新的线程获取代码
我因为新的线程和之前的主线程共享同一段代码
不需要import也就不存在在子线程中有重复了一次创建线程的操作
所以就不必要 if__name__ = ‘__main__’