Python3——多线程之threading模块
? ? ? ? ? ? ? ? ? ? ? ? ?Python3——多線程之threading模塊
目錄
Python3——多線程之threading模塊
Threading模塊的對象
Threading模塊的Thread類
queue模塊(線程間通信)
Python 提供了多個模塊來支持多線程編程,包括 thread、 threading 和 Queue 模塊等。程序是可以使用 thread 和 threading 模塊來創建與管理線程。 thread 模塊提供了基本的線程和鎖定支持;而 threading 模塊提供了更高級別、功能更全面的線程管理。使用 Queue 模塊,用戶可以創建一個隊列數據結構,用于在多線程之間進行共享。(推薦使用threading模塊比thread模塊更高級)
?
-
Threading模塊的對象
| 對象 | 描述 |
| Thread | 線程對象 |
| Lock | 互斥鎖 |
| Condition | 條件變量 |
| Event | 事件,該事件發生后所有等待該事件的線程將激活 |
| Semaphore | 信號量(計數器) |
| Timer | 定時器,運行前會等待一段時間 |
| Barrier | 創建一個障礙,必須達到指定數量線程才開始運行 |
?
-
Threading模塊的Thread類
| 對象 | 描述 |
| name | 線程名(屬性) |
| ident | 線程標識符(屬性) |
| daemon | 線程是否是守護線程(屬性) |
| _init_(group=None, tatget=None, name=None, args=(),kwargs ={}, verbose=None, daemon=None) | 實例化一個線程對象,需要有一個可調用的 target,以及其參數 args或 kwargs。還可以傳遞 name 或 group 參數,不過后者還未實現。此外, verbose 標 志 也 是 可 接 受 的。 而 daemon 的 值 將 會 設定thread.daemon 屬性/標志 |
| start() | 開啟線程 |
| run() | 定義線程功能的方法(通常在子類中被應用開發者重寫) |
| Barrier | 創建一個障礙,必須達到指定數量線程才開始運行 |
-
queue模塊(線程間通信)
| Queue(maxsize = 0) | 創建一個先入先出隊列。如果給定最大值,則在隊列沒有空間時阻塞;否則(沒有指定最大值),為無限隊列 |
| LifoQueue(maxsize=0) | 創建一個后入先出隊列。如果給定最大值,則在隊列沒有空間時阻塞;否則(沒有指定最大值),為無限隊列 |
| PriorityQueue(maxsize=0) | 創建一個優先級隊列。如果給定最大值,則在隊列沒有空間時阻塞,否則(沒有指定最大值),為無限隊列 |
| Empty | 當對空隊列調用 get*()方法時拋出異常 |
| Full | 當對已滿的隊列調用 put*()方法時拋出異常 |
| qsize () | 返回隊列大小 |
| empty() | 如果隊列為空,則返回 True;否則,返回 False |
| full() | 如果隊列已滿,則返回 True;否則,返回 False |
| put (item, block=Ture, timeout=None) | 將 item 放入隊列。如果 block 為 True(默認)且 timeout 為 None,則在有可用空間之前阻塞;如果 timeout 為正值,則最多阻塞 timeout 秒;如果 block 為 False,則拋出 Empty 異常 |
| get (block=True, timeout=None) | 從隊列中取得元素。如果給定了 block(非 0),則一直阻塞到有可用的元素為止 |
| join() | 在隊列中所有元素執行完畢并調用上面的 task_done()信號之前,保持阻塞 |
?
總結
以上是生活随笔為你收集整理的Python3——多线程之threading模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: emailjava中怎么校验_Java使
- 下一篇: python中 1.34e3_Pytho