From b77d297f3e18efc3b732f9a60102937ee286d9f5 Mon Sep 17 00:00:00 2001 From: zj3D Date: Thu, 6 Mar 2025 16:57:39 +0800 Subject: [PATCH] 02 --- B 高性能模式/{1.md => 多线程的应用场景.md} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename B 高性能模式/{1.md => 多线程的应用场景.md} (97%) diff --git a/B 高性能模式/1.md b/B 高性能模式/多线程的应用场景.md similarity index 97% rename from B 高性能模式/1.md rename to B 高性能模式/多线程的应用场景.md index 63f5462..8a1d084 100644 --- a/B 高性能模式/1.md +++ b/B 高性能模式/多线程的应用场景.md @@ -1,5 +1,4 @@ -### 多线程与异步编程 对于 **I/O 密集型任务**,**异步编程** 通常比 **多线程** 是更好的选择。异步编程特别适合高并发的 I/O 密集型任务(如 Web 服务器、爬虫、实时通信), 特别是大量并发连接的任务。 @@ -9,13 +8,14 @@ 在 GUI(图形用户界面)应用程序中,主线程负责处理用户交互,而其他任务(如文件读写、网络请求)需要在后台运行,以避免阻塞主线程导致界面卡顿。多线程可以与 GUI 主线程共享内存,方便更新界面状态。线程间通信简单,适合处理后台任务。GUI 框架(如 PyQt、Tkinter)通常有自己的事件循环,与异步编程的事件循环冲突。 +```python import sys import requests from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel from PyQt5.QtCore import QThread, pyqtSignal - # 工作线程:负责下载文件 +# 工作线程:负责下载文件 class DownloadThread(QThread): # 自定义信号,用于通知主线程下载进度 progress_signal = pyqtSignal(str) @@ -40,7 +40,7 @@ class DownloadThread(QThread): except Exception as e: self.progress_signal.emit(f"下载失败: {str(e)}") - #### 主窗口 +#### 主窗口 class MainWindow(QWidget): def __init__(self): super().__init__() @@ -89,7 +89,7 @@ if __name__ == "__main__": window.show() sys.exit(app.exec_()) - +``` 以下场景更适合使用 **多线程**: