最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python進程和線程之多線程的使用及說明

 更新時間:2025年09月16日 09:02:18   作者:Derrick__1  
Python多線程通過threading模塊實現(xiàn),主線程默認運行,子線程由Thread類創(chuàng)建并啟動,線程共享變量易引發(fā)數(shù)據(jù)混亂,需用Lock同步,但鎖可能降低效率或?qū)е滤梨i,(79字)

Python之多線程的使用

前面提到過進程是由很多線程組成的,那么今天廖老師就詳細解釋了線程是如何運行的。

首先,Python的標準庫提供了兩個模塊:_threadthreading_thread是低級模塊,threading是高級模塊,對_thread進行了封裝。

絕大多數(shù)情況下,我們只需要使用threading這個高級模塊。

根據(jù)廖老師的例子,運行出來如此的結(jié)果。

任何 Python 程序默認都在一個主線程中運行,該線程通常名為 MainThread

threading.current_thread().name用于獲取當前正在執(zhí)行的線程的名稱。

t = threading.Thread(target=loop, name='LoopThread')   

這里使用 threading.Thread類來創(chuàng)建一個線程對象 ,也就是我們所需要的支線線程

start()方法會??啟動新線程??

這意味著 Python 會創(chuàng)建新的執(zhí)行上下文,并??幾乎同時??開始在新線程中執(zhí)行 loop函數(shù)

重要的是,調(diào)用 start()后,主線程不會阻塞,它會繼續(xù)向下執(zhí)行(t.join()),而新線程 LoopThread也開始并發(fā)地執(zhí)行自己的任務。

不過由于多進程中,同一個變量,各自有一份拷貝存在于每個進程中,互不影響,而多線程中,所有變量都由所有線程共享,所以,任何一個變量都可以被任何一個線程修改,因此,線程之間共享數(shù)據(jù)最大的危險在于多個線程同時改一個變量,把內(nèi)容給改亂了。

我們這里會引入一個lock語句

balance = 0
lock = threading.Lock()

def run_thread(n):
    for i in range(100000):
        # 先要獲取鎖:
        lock.acquire()
        try:
            # 放心地改吧:
            change_it(n)
        finally:
            # 改完了一定要釋放鎖:
            lock.release()

創(chuàng)建一個鎖就是通過threading.Lock()來實現(xiàn)。

不過這里的鎖雖然可以讓我們的內(nèi)容不那么紊亂,但是包含鎖的某段代碼實際上只能以單線程模式執(zhí)行,效率就大大地下降了甚至他會讓多個鎖在一起執(zhí)行可能形成一個死鎖。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

吉木萨尔县| 隆昌县| 全州县| 张掖市| 龙里县| 凭祥市| 滦平县| 依兰县| 泸西县| 平陆县| 枞阳县| 驻马店市| 定西市| 额尔古纳市| 晋中市| 芦溪县| 民县| 仁化县| 岳池县| 额敏县| 汉阴县| 马边| 新竹市| 绥化市| 广灵县| 镇沅| 渭南市| 白朗县| 西昌市| 合江县| 沅江市| 尤溪县| 襄汾县| 历史| 桃源县| 内黄县| 淮南市| 陵水| 东莞市| 军事| 舟山市|