📌 第 11 小時:Python 進階應用(多執行緒與網路應用)
Python 不僅可以用來處理資料,還可以進行 多執行緒(Threading) 來提升效能,並支援 網路應用開發(Web Development),讓我們能夠與網路服務互動。本章將介紹:
- 多執行緒(Threading) 提升程式效能
- 多程序(Multiprocessing) 避免 Python GIL 限制
socket
進行網路通訊Flask
建立簡單的 Web 伺服器
🔹 1. 多執行緒(Threading)
多執行緒(Threading)允許程式同時執行多個任務,適用於 I/O 密集型(如檔案讀寫、網路請求) 的應用。
🟢 創建多執行緒
import threading
import time
def print_numbers():
for i in range(1, 6):
print(f"數字:{i}")
time.sleep(1)
# 創建執行緒
t1 = threading.Thread(target=print_numbers)
t1.start()
print("主程式繼續執行...")
t1.join() # 等待 t1 執行結束
print("執行緒完成")
📌 重點
threading.Thread(target=函式)
創建執行緒start()
啟動執行緒join()
等待執行緒完成
🔹 2. 多程序(Multiprocessing)
Python 的 GIL(Global Interpreter Lock)限制了 多執行緒無法同時執行多個 CPU 運算任務,因此對於 CPU 密集型 任務,如 數據分析、機器學習,應使用 多程序(Multiprocessing)。
🟢 使用 multiprocessing
import multiprocessing
import time
def print_numbers():
for i in range(1, 6):
print(f"數字:{i}")
time.sleep(1)
if __name__ == "__main__":
p1 = multiprocessing.Process(target=print_numbers)
p1.start()
p1.join()
print("多程序執行完成")
📌 適用場景
- 多執行緒(Threading) → I/O 密集型(檔案讀寫、網路請求)
- 多程序(Multiprocessing) → CPU 密集型(大數據計算、圖像處理)
🔹 3. socket
進行網路通訊
Python 提供 socket
模組,可用來建立伺服器與客戶端,適用於 網路通訊、聊天程式 等。
🟢 創建簡單的 TCP 伺服器
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("localhost", 12345)) # 綁定 IP 和 Port
server.listen(5)
print("伺服器啟動,等待連線...")
conn, addr = server.accept()
print(f"來自 {addr} 的連線")
conn.sendall(b"歡迎來到 Python 伺服器!")
conn.close()
🟢 創建 TCP 客戶端
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("localhost", 12345))
data = client.recv(1024)
print(f"收到伺服器回應:{data.decode()}")
client.close()
📌 適用場景
- 建立 內部網路通訊
- 建立 簡單的聊天應用
- 與其他系統進行 Socket 通訊
🔹 4. Flask
建立 Web 伺服器
Python 提供 Flask 框架來快速開發 Web 伺服器,適用於 API 服務、簡單網頁應用。
🟢 安裝 Flask
pip install flask
🟢 建立 Flask 伺服器
from flask import Flask
app = Flask(__name__)
@app.route("/") # 設定首頁路由
def home():
return "歡迎來到 Flask 伺服器!"
if __name__ == "__main__":
app.run(debug=True)
📌 這個程式會在 http://127.0.0.1:5000/
啟動一個網頁伺服器。
🟢 建立 API 服務
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/api/data")
def get_data():
return jsonify({"message": "這是 API 數據", "status": "success"})
if __name__ == "__main__":
app.run(debug=True)
📌 訪問 http://127.0.0.1:5000/api/data
會回傳 JSON 格式的 API 數據。
📌 第 11 小時小結
✅ threading
建立多執行緒,提高 I/O 效能
✅ multiprocessing
用於 CPU 密集運算,避免 GIL 限制
✅ socket
可用於建立 TCP 伺服器與客戶端
✅ Flask
可以快速建立 Web 伺服器與 API 服務
學完這一章,你已掌握 Python 多執行緒、網路通訊與 Web 應用,下一步將學習 機器學習入門,讓你的 Python 應用更具智慧!🚀
沒有留言:
張貼留言