|
|
@ -1,10 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Python的多线程时间切片间隔可以通过 sys.setswitchinterval() 设置。其他切换触发条件 :
|
|
|
|
|
|
|
|
- 当线程等待I/O操作(如网络请求或磁盘读写)时,GIL会被释放,允许其他线程运行。
|
|
|
|
|
|
|
|
- 某些函数(如 time.sleep())会显式释放GIL。
|
|
|
|
|
|
|
|
- 线程主动释放GIL。
|
|
|
|
|
|
|
|
|
|
|
|
异步编程特别适合高并发的 I/O 密集型任务(如 Web 服务器、爬虫、实时通信), 特别是大量并发连接的任务。
|
|
|
|
异步编程特别适合高并发的 I/O 密集型任务(如 Web 服务器、爬虫、实时通信), 特别是大量并发连接的任务。
|
|
|
|
对于 **I/O 密集型任务**,**异步编程** 通常比 **多线程** 是更好的选择。
|
|
|
|
对于 **I/O 密集型任务**,**异步编程** 通常比 **多线程** 是更好的选择。
|
|
|
|
多线程相对编程简单 。
|
|
|
|
多线程相对编程简单 。
|
|
|
|
|
|
|
|
|
|
|
|
但,以下场景更适合使用 **多线程**:
|
|
|
|
以下场景更适合使用 **多线程**:
|
|
|
|
|
|
|
|
|
|
|
|
### 场景:**GUI 应用程序**
|
|
|
|
### 场景:**GUI 应用程序**
|
|
|
|
|
|
|
|
|
|
|
|