2025年3月6日 星期四

Python 18 小時入門--第 11 小時:Python 進階應用(多執行緒與網路應用)

 📌 第 11 小時:Python 進階應用(多執行緒與網路應用)

Python 不僅可以用來處理資料,還可以進行 多執行緒(Threading) 來提升效能,並支援 網路應用開發(Web Development),讓我們能夠與網路服務互動。本章將介紹:

  1. 多執行緒(Threading) 提升程式效能
  2. 多程序(Multiprocessing) 避免 Python GIL 限制
  3. socket 進行網路通訊
  4. 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 應用更具智慧!🚀

沒有留言:

張貼留言