攝影或3C

Python如何用 Thread 讓程式同時做多件事? threading與 非同步 有何差別? import threading ; t1 = threading.Thread( target= worker, args= (“員工A”,))

在寫程式的時候,我們常常會遇到這樣的情境:
👉「我要同時做很多工作,但如果一個一個等,會浪費很多時間。」

這時候,就可以用 Thread(執行緒) 來幫忙!


🧑‍💻 什麼是 Thread?

  • Process(程序):好比一間公司。
  • Thread(執行緒):就像公司裡的員工。

一間公司(Process)可以有很多員工(Thread),每個員工都可以同時做不同的工作。
這樣效率就會比一個人單打獨鬥好很多。


📌 範例:兩個員工同時工作

先來看一個簡單的程式:

import threading
import time

def worker(name):
    print(f"{name} 開始工作")
    time.sleep(2)  # 模擬需要花 2 秒的工作
    print(f"{name} 工作完成")

# 建立兩個 Thread兩個員工
t1 = threading.Thread(target=worker, args=("員工A",))
t2 = threading.Thread(target=worker, args=("員工B",))

# 啟動 Thread
t1.start()
t2.start()

# 等待兩個 Thread 完成
t1.join()
t2.join()

print("全部工作完成!")

輸出結果:

🔍 程式解釋

  1. threading.Thread(...)
    建立一個新的執行緒,指定要執行的函式 worker,並傳入參數(員工名字)。
  2. .start()
    讓這個執行緒開始工作。
  3. .join()
    等待這個執行緒結束,確保程式最後不會提早結束。

⏱ 執行效果

如果用 單一員工(不用 Thread),邏輯會是這樣:

  • 員工A 開始 → 等 2 秒 → 員工A 完成
  • 員工B 開始 → 等 2 秒 → 員工B 完成
  • 總共花 4 秒

但現在用了 Thread(兩個員工同時工作)

  • 員工A 開始、員工B 開始(幾乎同時)
  • 等 2 秒 → 員工A 完成、員工B 完成
  • 總共只花 2 秒

🎯 總結

  • Thread = 讓程式同時做多件事的小幫手。
  • 適合用在 I/O-bound 任務(需要等待的工作,如下載、讀檔、API 請求)。
  • 在 Python 裡,用 threading.Thread 就能輕鬆建立多個工作同時進行。

推薦hahow線上學習python: https://igrape.net/30afN

🏢 公司員工比喻

1. Threading = 多個員工

  • 公司(Process)裡有很多員工(Thread)。
  • 每個員工可以同時做不同的工作。
  • 缺點:
    • 員工之間要共享資源(例如同一台影印機),可能會打架(需要鎖 Lock)。
    • 招太多員工(Thread)會增加管理成本(記憶體、CPU 切換)。

2. Async(非同步)= 一位超級員工

  • 公司只有一個超級員工(Event Loop)。
  • 他雖然一次只能做一件事,但 非常會切換
    • 在等影印機時,不會傻傻站著,會先去回 email。
    • 在等同事回覆時,會先去整理資料。
  • 這樣就能用「單一人力」高效率完成很多工作。
  • 缺點:
    • 如果遇到一件非常耗體力(CPU-heavy)的工作,他就完全卡死,別的事都做不了。

🧑‍💻 適用場景比較

🎯 總結

  • Threading:多員工 → 適合「同時做很多需要等待的工作」。
  • Async:一位超級員工 → 適合「大量小工作,主要是等網路」。
  • Multiprocessing:多公司 → 適合「重度計算」。

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡