Python多線程編程---(1)threading 模塊 Thread 類

全文參考: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)


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章