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

Python THREADING模塊中的JOIN()方法深入理解

 更新時(shí)間:2015年02月18日 16:50:32   投稿:junjie  
這篇文章主要介紹了Python THREADING模塊中的JOIN()方法深入理解,本文用簡(jiǎn)潔易懂的語(yǔ)言總結(jié)了對(duì)JOIN()方法的理解,不同于其它文章,需要的朋友可以參考下

看了oschina上的兩個(gè)代碼,受益匪淺。其中對(duì)join()方法不理解,看python官網(wǎng)文檔的介紹:
join([timeout]):等待直到進(jìn)程結(jié)束。這將阻塞正在調(diào)用的線程,直到被調(diào)用join()方法的線程結(jié)束。(好難翻譯,應(yīng)該是這個(gè)意思)

哈哈,這個(gè)易懂。
join方法,如果一個(gè)線程或者一個(gè)函數(shù)在執(zhí)行過程中要調(diào)用另外一個(gè)線程,并且待到其完成以后才能接著執(zhí)行,那么在調(diào)用這個(gè)線程時(shí)可以使用被調(diào)用線程的join方法。

復(fù)制代碼 代碼如下:

#-*- encoding: gb2312 -*-
import string, threading, time
 
def thread_main(a):
    global count, mutex
    # 獲得線程名
    threadname = threading.currentThread().getName()
 
    for x in xrange(0, int(a)):
        # 取得鎖
        mutex.acquire()
        count = count + 1
        # 釋放鎖
        mutex.release()
        print threadname, x, count
        time.sleep(1)
 
def main(num):
    global count, mutex
    threads = []
 
    count = 1
    # 創(chuàng)建一個(gè)鎖
    mutex = threading.Lock()
    # 先創(chuàng)建線程對(duì)象
    for x in xrange(0, num):
        threads.append(threading.Thread(target=thread_main, args=(10,)))
    # 啟動(dòng)所有線程
    for t in threads:
        t.start()
    # 主線程中等待所有子線程退出
    for t in threads:
        t.join() 
 
if __name__ == '__main__':
    num = 4
    # 創(chuàng)建4個(gè)線程
    main(4)
###################################################################
#-*- encoding: gb2312 -*-
import threading
import time
 
class Test(threading.Thread):
    def __init__(self, num):
        threading.Thread.__init__(self)
        self._run_num = num
 
    def run(self):
        global count, mutex
        threadname = threading.currentThread().getName()
 
        for x in xrange(0, int(self._run_num)):
            mutex.acquire()
            count = count + 1
            mutex.release()
            print threadname, x, count
            time.sleep(1)
 
if __name__ == '__main__':
    global count, mutex
    threads = []
    num = 4
    count = 1
    # 創(chuàng)建鎖
    mutex = threading.Lock()
    # 創(chuàng)建線程對(duì)象
    for x in xrange(0, num):
        threads.append(Test(10))
    # 啟動(dòng)線程
    for t in threads:
        t.start()
    # 等待子線程結(jié)束
    for t in threads:
        t.join()

在程序中,最后join()方法的調(diào)用就明白了,是主進(jìn)程挨個(gè)調(diào)用子線程的join()方法。當(dāng)四個(gè)線程都執(zhí)行完畢后,主線程才會(huì)執(zhí)行下面的代碼,在這里也就是退出了。
相對(duì)應(yīng)的在網(wǎng)上一起找到的另一個(gè)方法:
3.守護(hù)進(jìn)程

setDaemon()

這個(gè)方法基本和join是相反的。當(dāng)我們?cè)诔绦蜻\(yùn)行中,執(zhí)行一個(gè)主線程,如果主線程又創(chuàng)建一個(gè)子線程,主線程和子線程就分兵兩路,分別運(yùn)行,那么當(dāng)主線程完成想退出時(shí),會(huì)檢驗(yàn)子線程是否完成。如果子線程未完成,則主線程會(huì)等待子線程完成后再退出。但是有時(shí)候我們需要的是,只要主線程完成了,不管子線程是否完成,都要和主線程一起退出,這時(shí)就可以用setDaemon方法啦

相關(guān)文章

  • python 變量初始化空列表的例子

    python 變量初始化空列表的例子

    今天小編就為大家分享一篇python 變量初始化空列表的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-11-11
  • Python使用sys.path查看當(dāng)前的模塊搜索路徑

    Python使用sys.path查看當(dāng)前的模塊搜索路徑

    sys.path 是 Python 中的一個(gè)列表,它用于存儲(chǔ)模塊搜索路徑,當(dāng)你使用 import 語(yǔ)句導(dǎo)入一個(gè)模塊時(shí),Python 會(huì)按照 sys.path 列表中的路徑順序來(lái)查找這個(gè)模塊,本文給大家介紹了Python使用sys.path查看當(dāng)前的模塊搜索路徑,需要的朋友可以參考下
    2025-02-02
  • python3 requests庫(kù)實(shí)現(xiàn)多圖片爬取教程

    python3 requests庫(kù)實(shí)現(xiàn)多圖片爬取教程

    今天小編就為大家分享一篇python3 requests庫(kù)實(shí)現(xiàn)多圖片爬取教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-12-12
  • python安裝TA-Lib庫(kù)報(bào)錯(cuò)問題的解決方法

    python安裝TA-Lib庫(kù)報(bào)錯(cuò)問題的解決方法

    TaLib是一個(gè)Python金融指數(shù)處理庫(kù),包含了很多技術(shù)分析里的常用參數(shù)指標(biāo),例如MA、SMA、WMA、MACD、ATR等,這篇文章主要給大家介紹了關(guān)于python安裝TA-Lib庫(kù)報(bào)錯(cuò)問題的解決方法,需要的朋友可以參考下
    2024-01-01
  • Python中安全地使用多進(jìn)程和多線程進(jìn)行數(shù)據(jù)共享

    Python中安全地使用多進(jìn)程和多線程進(jìn)行數(shù)據(jù)共享

    在并發(fā)編程中,有時(shí)多個(gè)線程或進(jìn)程需要訪問共享的數(shù)據(jù),因此我們需要一些機(jī)制來(lái)確保數(shù)據(jù)的安全訪問,本文將從多線程和多進(jìn)程兩個(gè)角度探討Python如何安全地實(shí)現(xiàn)數(shù)據(jù)共享
    2024-12-12
  • 關(guān)于Python的各種文件操作

    關(guān)于Python的各種文件操作

    這篇文章主要介紹了關(guān)于Python的各種文件操作,適合剛?cè)腴T的小白或者對(duì)于文件操作基礎(chǔ)不太牢固的同學(xué),需要的朋友可以參考下
    2023-04-04
  • django實(shí)現(xiàn)前后臺(tái)交互實(shí)例

    django實(shí)現(xiàn)前后臺(tái)交互實(shí)例

    本篇文章主要介紹了django實(shí)現(xiàn)前后臺(tái)交互實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-08-08
  • Tensorflow限制CPU個(gè)數(shù)實(shí)例

    Tensorflow限制CPU個(gè)數(shù)實(shí)例

    今天小編就為大家分享一篇Tensorflow限制CPU個(gè)數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-02-02
  • python中defaultdict用法實(shí)例詳解

    python中defaultdict用法實(shí)例詳解

    python中的dict是一個(gè)重要的數(shù)據(jù)類型,知道如何使用這個(gè)數(shù)據(jù)類型很簡(jiǎn)單,但是這個(gè)類型使用過程中容易進(jìn)入一些誤區(qū),下面這篇文章主要給大家介紹了關(guān)于python中defaultdict用法的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 新手學(xué)習(xí)Python2和Python3中print不同的用法

    新手學(xué)習(xí)Python2和Python3中print不同的用法

    在本篇文章里小編給大家分享的是關(guān)于Python2和Python3中print不同的用法,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06

最新評(píng)論

明光市| 霍山县| 安新县| 深州市| 曲靖市| 湖州市| 利川市| 曲松县| 石首市| 玉溪市| 仁寿县| 图们市| 舞钢市| 太白县| 天峻县| 甘南县| 德安县| 喜德县| 枣庄市| 新昌县| 保亭| 梅河口市| 左权县| 阳谷县| 库伦旗| 台江县| 锦屏县| 抚顺县| 柳州市| 清河县| 武胜县| 赤峰市| 广南县| 新沂市| 万安县| 无锡市| 长沙市| 米脂县| 赣榆县| 剑川县| 华坪县|