日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python中的threading模塊

正如我們在之前的教程中所看到的,threading模塊用于在 python 中創(chuàng)建、控制和管理線程。在本教程中,我們將討論由threading模塊定義的各種函數(shù)和對象類型。

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站設(shè)計與策劃設(shè)計,郫都網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:郫都等地區(qū)。郫都做網(wǎng)站價格咨詢:028-86922220


threading模塊功能

該模塊提供以下管理線程的功能:

這是上一個教程的代碼片段,我們將使用它來查看threading模塊提供的各種功能。

穿線。active_count()功能

該函數(shù)返回當(dāng)前活動的Thread對象的數(shù)量。

import time
import threading

def thread1(i):
    time.sleep(3)
    #print('No. printed by Thread 1: %d' %i)

def thread2(i):
    time.sleep(3)
    #print('No. printed by Thread 2: %d' %i)

if __name__ == '__main__':
    t1 = threading.Thread(target=thread1, args=(10,))
    t2 = threading.Thread(target=thread2, args=(12,))
    t1.start()
    t2.start()
    print("No. of active threads: " + threading.active_count())
    t1.join()
    t2.join()

活動線程數(shù):3

嘗試在上面的終端中運行該代碼。您將看到線程數(shù)為 3 ,因為我們已經(jīng)創(chuàng)建了 2 個線程,并且在主線程中正在進行完整的執(zhí)行。


穿線。current_thread()

該函數(shù)將返回當(dāng)前線程對象,對應(yīng)調(diào)用者的控制線程(當(dāng)前在調(diào)用者的控制中)。如果調(diào)用者的控制線程不是通過線程模塊(例如主線程)創(chuàng)建的,則返回一個功能有限的偽線程對象。

import time
import threading

def thread1(i):
    time.sleep(3)
    #print('No. printed by Thread 1: %d' %i)

def thread2(i):
    time.sleep(3)
    #print('No. printed by Thread 2: %d' %i)

if __name__ == '__main__':
    t1 = threading.Thread(target=thread1, args=(10,))
    t2 = threading.Thread(target=thread2, args=(12,))
    t1.start()
    t2.start()
    print("Current thread is: " + threading.current_thread())
    t1.join()
    t2.join()

當(dāng)前線程為:


穿線。get_ident()

該函數(shù)返回當(dāng)前線程的線程標(biāo)識符。這是一個非零整數(shù)值。如果我們啟動了線程,那么這個方法將返回它的標(biāo)識符,否則,它將返回?zé)o。

我們可以使用這個方法來索引線程特定數(shù)據(jù)的字典。當(dāng)一個線程退出(停止)并創(chuàng)建另一個線程時,可以回收線程標(biāo)識符。

threading.get_ident()

140578859194112


穿線。enumerate()

該方法返回當(dāng)前活動的所有Thread對象的列表。該列表包括后臺線程(當(dāng)程序退出時,與之相關(guān)的所有后臺線程都將自動終止)當(dāng)前線程創(chuàng)建的虛擬線程對象,以及主線程。

此列表中不存在已終止的線程和尚未啟動的線程。

 threading.enumerate() 

[ 、、 ]


穿線。main_thread()

此方法返回主 Thread對象。在正常情況下,主線程是啟動 python 解釋器的線程。

 threading.main_thread() 

穿線。settrace(fun)

該方法用于為使用threading模塊啟動的所有線程設(shè)置跟蹤函數(shù)/鉤子。對于每個線程,跟蹤函數(shù)被傳遞給sys.settrace()方法,該方法在調(diào)用run()方法之前被附加到線程。

我們希望作為跟蹤函數(shù)的回調(diào)函數(shù)將接收三個參數(shù):frame(來自正在運行的代碼的堆棧幀)event(一個命名通知類型的字符串)和arg(一個特定于事件的值)

def hello(frame, event, arg):
    print("Hello, I am a trace hook.")
threading.settrace(hello) 

嘗試更新頂部終端中的代碼。將hello函數(shù)放在主方法和語句threading.settrace(hello)之外,就在我們?yōu)榫€程調(diào)用start方法的語句之上。


穿線。setprofile(fun)

此方法用于為從threading模塊啟動的所有線程設(shè)置配置文件函數(shù)。和 trace 函數(shù)一樣,profile 函數(shù)也傳遞給每個線程的sys.setprofile()方法,在調(diào)用run()方法之前附加到線程。

 threading.setprofile(hello) 

穿線。stack_size([size])

此方法返回創(chuàng)建新線程時使用的線程堆棧大小。size參數(shù)是可選的,可用于設(shè)置創(chuàng)建后續(xù)線程所用的堆棧大小,必須為 0 或正整數(shù)(D =默認值為 0)。

如果不支持更改線程堆棧大小,則會引發(fā)運行時錯誤。

如果指定的堆棧大小無效,將引發(fā)值錯誤。

目前 32 KiB 是支持的最小堆棧大小,為解釋器提供足夠的堆棧空間。


穿線。TIMEOUT_MAX

除了上述指定的功能外,threading模塊還定義了一個常數(shù)。如果您指定的超時值大于TIMEOUT_MAX常量的值,您將得到一個OverflowError。


threading模塊對象

除了上面指定的功能之外,threading模塊還提供了許多類,這些類的對象在創(chuàng)建和管理線程時非常有用。

以下是一些對象類型:

| 目標(biāo) | 描述 | | 線 | 對象,表示單個執(zhí)行線程。 | | 鎖 | 原始鎖對象。 | | 斷續(xù)器 | RLock 或可重入鎖對象為單線程提供了獲取(重)已持有鎖(遞歸鎖)的能力。 | | 情況 | 條件變量對象使一個線程等待,直到另一個線程滿足某個“條件”(如狀態(tài)變化或某些數(shù)據(jù)值) | | 事件 | 這是條件變量的一個更通用的版本,可以讓許多線程等待某個事件的發(fā)生,所有等待的線程只有在事件發(fā)生時才會被喚醒。 | | 旗語 | 當(dāng)線程塊之間共享的有限資源不可用時,提供一個“計數(shù)器”。 | | 有界符號 | 類似于信號量,但確保它永遠不會超過初始值。 | | 計時器 | 類似于線程,除了它在運行之前等待一段指定的時間。 | | 屏障 | 創(chuàng)建一個“屏障”,指定數(shù)量的線程必須全部到達該屏障,然后才能繼續(xù)運行。 |

上表簡要介紹了 python threading模塊中的各種對象類型。我們將在接下來的幾個教程中詳細討論所有這些對象。




文章名稱:Python中的threading模塊
文章URL:http://m.5511xx.com/article/codhssh.html