8 分鐘內掌握 Python 多線程技巧

Try Proseoai — it's free
AI SEO Assistant
SEO Link Building
SEO Writing

8 分鐘內掌握 Python 多線程技巧

目錄

  1. 什麼是多線程?
  2. Python 中的全局解譯器鎖定(GIL)
  3. 如何在 Python 中使用多線程?
  4. 理解 worker 函數
  5. 在主線程中處理用戶輸入
  6. 同時運行多個線程
  7. 使用守護線程
  8. 傳遞參數給函數
  9. 控制多個線程的執行順序
  10. 總結與下一步行動

🧵 什麼是多線程?

多線程是指在一個程序中同時執行多個任務或操作的能力。在 Python 中,由於全局解譯器鎖定(GIL)的存在,實際上並沒有真正的多線程。Python 的多線程是一種偽多線程,通過在不同任務之間切換執行來實現類似多線程的效果。

🔒 Python 中的全局解譯器鎖定(GIL)

全局解譯器鎖定是 CPython 解釋器所具有的一種機制,它確保在任何時候只能有一個線程執行 Python 代碼。這意味著在單個線程中執行 CPU-bound 任務時,並不能從多線程中獲得更高的性能。然而,對於 I/O-bound 任務,如網絡請求或等待用戶輸入,多線程可以提供更好的性能。

🚦 如何在 Python 中使用多線程?

要使用多線程,首先需要導入 threading 模塊。這是 Python 的一個核心模塊,無需進行額外的安裝。

import threading

此外,還需要導入 time 模塊,以便使用其中的 sleep 函數創建一些間隔。

import time

🛠 理解 worker 函數

在使用多線程之前,我們先來創建一個簡單的函數作為示例。我們將其命名為 worker,它將不斷循環並打印一個計數器的值。

def worker():
    done = False
    counter = 0

    while not done:
        time.sleep(1)
        counter += 1
        print(counter)

這個函數很簡單,就是一個無限循環,每隔一秒打印一個計數器的值。

⌨️ 在主線程中處理用戶輸入

現在我們想在主線程中處理用戶的輸入。我們可以通過等待用戶輸入來實現這一點。

while not done:
    user_input = input("請按Enter以結束:")
    done = True

這樣,當用戶輸入任何內容並按下 Enter 鍵時,我們將設置 done 變量為 True,從而退出 while 循環。

🌐 同時運行多個線程

現在,我們已經準備好使用多線程來同時運行 worker 函數和處理用戶輸入了。

首先,我們需要創建一個線程對象,並將 worker 函數作為目標。

thread = threading.Thread(target=worker)

然後,我們可以開始線程。

thread.start()

現在,worker 函數將在一個單獨的線程中運行,同時我們還可以在主線程中處理用戶輸入。

👻 使用守護線程

預設情況下,Python 中的線程都是重要的線程,這意味著即使主線程結束,所有線程都會繼續運行。

如果我們希望在主線程結束後所有線程也結束,我們可以將線程設置為守護線程。

thread.daemon = True

這樣,當主線程結束時,守護線程也將隨之結束,無需額外的處理。

🎁 傳遞參數給函數

如果我們希望在創建線程時向函數傳遞參數,我們可以在創建線程時指定這些參數。

thread = threading.Thread(target=worker, args=("ABC",))

在上面的示例中,我們將字符串 "ABC" 作為參數傳遞給 worker 函數。

🧩 控制多個線程的執行順序

如果需要等待多個線程執行完成後再繼續執行下面的代碼,我們可以使用 join 方法。

thread1 = threading.Thread(target=worker1)
thread2 = threading.Thread(target=worker2)

thread1.start()
thread2.start()

thread1.join()
thread2.join()

在上面的示例中,我們創建了兩個線程,並使用 start 方法開始它們的執行。然後,我們使用 join 方法等待這兩個線程的執行完成。

這樣,直到這兩個線程都執行完畢,我們才會繼續執行下面的代碼。

📝 總結與下一步行動

通過本文,你學會了如何在 Python 中使用多線程,並了解了如何處理用戶輸入、使用守護線程和傳遞參數給函數。下一步,你可以嘗試在實際項目中應用多線程,以提高程序的效率和性能。

不要忘記點贊、留言和訂閱我們的頻道,以便不錯過任何一個免費的未來視頻。感謝觀看,下次見,掰掰!

Are you spending too much time on seo writing?

SEO Course
1M+
SEO Link Building
5M+
SEO Writing
800K+
WHY YOU SHOULD CHOOSE Proseoai

Proseoai has the world's largest selection of seo courses for you to learn. Each seo course has tons of seo writing for you to choose from, so you can choose Proseoai for your seo work!

Browse More Content