python 多线程 模块_Python多线程threading和multiprocessing模块实例解析
本文研究的主要是Python多線程threading和multiprocessing模塊的相關內容,具體介紹如下。
線程是一個進程的實體,是由表示程序運行狀態的寄存器(如程序計數器、棧指針)以及堆棧組成,它是比進程更小的單位。
線程是程序中的一個執行流。一個執行流是由CPU運行程序代碼并操作程序的數據所形成的。因此,線程被認為是以CPU為主體的行為。
線程不包含進程地址空間中的代碼和數據,線程是計算過程在某一時刻的狀態。所以,系統在產生一個線程或各個線程之間切換時,負擔要比進程小得多。
線程是一個用戶級的實體,線程結構駐留在用戶空間中,能夠被普通的用戶級函數直接訪問。
一個線程本身不是程序,它必須運行于一個程序(進程)之中。因此,線程可以定義為一個程序中的單個執行流。
多線程是指一個程序中包含多個執行流,多線程是實現并發的一種有效手段。一個進程在其執行過程中,可以產生多個線程,形成多個執行流。每個執行流即每個線程也有它自身的產生、存在和消亡的過程。
多線程程序設計的含義就是可以將程序任務分成幾個并行的子任務。
線程的狀態圖:
Python中常使用的線程模塊
thread(低版本使用的),threading
Queue
multiprocessing
threading
thread模塊是Python低版本中使用的,高版本中被threading代替了。threading模塊提供了更方便的API來操作線程。
threading.Thread
Thread是threading模塊中最重要的類之一,可以使用它來創建線程。創建新的線程有兩種方法:
方法一:直接創建threading.Thread類的對象,初始化時將可調用對象作為參數傳入。
方法二:通過繼承Thread類,重寫它的run方法。
Thread類的構造方法:
__init__(group=None, target=None, name=None, args=(), kwargs=None, verbose=None)
參數說明:
group:線程組,目前還沒有實現,庫引用中提示必須是None。
target:要執行的方法;
name:線程名;
args/kwargs:要傳入方法的參數。
Thread類擁有的實例方法:
isAlive():返回線程是否在運行。正在運行指的是啟動后,終止前。
getName(name)/setName(name):獲取/設置線程名。
isDaemon(bool)/setDaemon(bool):獲取/設置是否為守護線程。初始值從創建該線程的線程繼承而來,當沒有非守護線程仍在運行時,程序將終止。
start():啟動線程。
join([timeout]):阻塞當前上下文環境的線程,直到調用此方法的線程終止或到達指定的等待時間timeout(可選參數)。即當前的線程要等調用join()這個方法的線程執行完,或者是達到規定的時間。
總結
以上是生活随笔為你收集整理的python 多线程 模块_Python多线程threading和multiprocessing模块实例解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何断开mongodb数据库连接_如何连
- 下一篇: chrome vue 未响应_VUE数据