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