全文參考:https://blog.csdn.net/briblue/article/details/85101144
最近看了下團隊自動化測試用例的代碼,裏面有涉及並行處理的邏輯,主要是基於python的threading 模塊來實現的,但運行結果出現了一些奇怪的現象,花了一天的時候改去改來沒問題定位到原因,歸根結底還是自己對多線程這一塊不熟悉,因此注備花點時間學習下python的threading 模塊用法。
一般併發的手段有采用多進程和多線程,但線程比進程更輕量化,系統開銷一般也更低,所以大家更傾向於用多線程的方式處理併發的情況。
Python 提供多線程編程的方式,Python 實現多線程編程需要藉助於 threading 模塊,下面的示例基於Python3來實現。
引用方式如下,threading 模塊中最核心的內容是 Thread 這個類。
import threading
我們要創建 Thread 對象,然後讓它們運行,每個 Thread 對象代表一個線程,在每個線程中我們可以讓程序處理不同的任務,這就是多線程編程。值得注意的是,程序運行時默認就是在主線程上。
創建 Thread 對象有 2 種手段。
(1)直接創建 Thread ,將一個 callable 對象從類的構造器傳遞進去,這個 callable 就是回調函數,用來處理任務。
編寫一個自定義類繼承 Thread,然後複寫 run() 方法,在 run() 方法中編寫任務處理代碼,然後創建這個 Thread 的子類。
(2)編寫一個自定義類繼承 Thread,然後複寫 run() 方法,在 run() 方法中編寫任務處理代碼,然後創建這個 Thread 的子類。
1. 直接創建 Thread 對象
class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
示例代碼:
import threading
import time
def test():
for index in range(5):
print(threading.current_thread().name + ' test ', index)
time.sleep(1)
thread = threading.Thread(target=test)
thread.start() # 啓動線程
for i in range(5):
print(threading.current_thread().name + ' main ', i)
time.sleep(1)