close

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  這個工作會保證出現在程式結束時的最後一行.

 

202243日星期日

arrow
arrow
    創作者介紹
    創作者 jackterrylau 的頭像
    jackterrylau

    儒道哲學的浪漫人生

    jackterrylau 發表在 痞客邦 留言(0) 人氣()