Python 執行緒(Threading)
3 min readNov 11, 2019
在Windows系統裡,可以從工作管理員(taskmgr)看到程序( process):
而這些程序是在作業系統裡執行中的程式,且在ram上有自己的記憶體空間,從上圖可以知道電腦裡有很多的程序在同一時間運行。而執行緒( thread)是附屬於程序的,一個程序可以擁有很多個執行緒,例如上圖中的Google Chrome可能有20個執行緒在運行中。現在的CPU有多個核心(Core)數,每一個程序會被作業系統分配到各自的 CPU Core裡。CPU Core、RAM、Process、Thread的關係如下圖:
以上圖中的 Process 1 為例,它被分配到 Core 1,有 RAM 1的記憶體空間,擁有 Thread A, B兩個執行緒。從上圖來看,執行緒好像可以同時運行,但,它只是看起來很像在同時執行,除此之外還有些 其他議題 需要考慮的。
Python建立執行緒的方式有兩種:
1. 呼叫_thread.start_new_thread ( function, args[, kwargs] )函數( https://docs.python.org/3/library/_thread.html)。
2. 繼承 Thread 類別。
有時執行緒必須等待另一個執行緒結束才能執行。這時可以使用 lock 的機制。
Originally published at https://yunlinsong.blogspot.com.