环境
- xubuntu 16.04
- anaconda
- pycharm
- python3.6
- https://www.cnblogs.com/jokerbj/p/7460260.html
- https://www.dabeaz.com/python/UnderstandingGIL.pdf
多线程 vs 多进程
-
进程:程序运行的一个状态
- 包含地址空间,内存,数据栈等
- 每个进程由自己完全独立的运行环境,多进程共享数据是一个问题
-
线程
- 一个进程的独立运行片段,一个进程可以有多个线程片段
- 轻量化的进程
- 一个进程的多个线程间共享数据和上下文运行环境
- 共享互斥问题
-
全局解释器锁(GIL)
- Python代码执行由Python虚拟机进行控制
- 在主循环中只能有一个控制线程在执行
-
Python包
- thread:有问题,不好用;Python3改成了_thread
- threading:通行包
- 直接利用threading.Thread生成Thread实例
- t = threading.Thread(target=xxx,args=(xxx,))
- t.start():启动多线程
- t.join():等待多线程执行完成
守护线程 - daemon
- 直接利用threading.Thread生成Thread实例