Python 建立子執行緒的方式很容易,只需要 import threading 然後在程式中 建立 thread 就可以了.
import threading
t = threading.Thread(target=sub_continue_order, args=(apiKey, apiSecret, orderData, apiInterval, repeat, k+1))
上面是我寫的一段執行緒建立示例, t 就是我們要建的執行序實例, target 是該執行去要做的事, 寫成一個 名叫 sub_continue_order 的 function 去處理它, args 裡面放的是 sub_countinue_order 的參數, 相當於呼叫:
sub_continue_order(apiKey, apiSecret, orderData, apiInterval, repeat, k+1)
而通常我們需要同時執行多個執行緒, 所以一般可以用一個List 來儲存建立起來的 thread 實例:
ts.append(t) #ts = [] when initialized.
接下來要啟動執行緒就很簡單了, 只需要用 thread 物件的 start() 方法就可以啟動執行緒, 但因為我們可能有多個執行緒, 所以用一個 for loop 來循序從 ts 執行緒池中啟動每一個執行緒:
# Start all threads.
for i in range(len(ts)):
ts[i].start()
啟動之後我們不知道每一個執行緒何時會結束, 如果我想在所有執行緒都結束後做一些 summary 的工作就得先寫個 for loop 去 檢查所有已啟動執行緒的狀態, 先用thread 的 is_alive() 方法檢視執行緒是否還在執行中( True 表示執行緒還活著) , 如果執行緒活著, 就 使用 join() 方法 如此 最後等所以執行緒結束後才會執行後面的程式.
# wait for all threads are completed.
for j in range(len(ts)):
if ts[j].is_alive() is True: ts[j].join()
print("End Testing.")
加入Join之後, Print End Testing 這個工作會保證出現在程式結束時的最後一行.
2022年4月3日星期日