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

詳解Python并發(fā)編程之創(chuàng)建多線程的幾種方法

 更新時(shí)間:2019年08月23日 09:24:10   作者:Python編程時(shí)光  
這篇文章主要介紹了詳解Python并發(fā)編程之創(chuàng)建多線程的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

大家好,并發(fā)編程 今天開始進(jìn)入第二篇。

今天的內(nèi)容會比較基礎(chǔ),主要是為了讓新手也能無障礙地閱讀,所以還是要再鞏固下基礎(chǔ)。學(xué)完了基礎(chǔ),你們也就能很順暢地跟著我的思路理解以后的文章。

本文目錄

  • 學(xué)會使用函數(shù)創(chuàng)建多線程
  • 學(xué)會使用類創(chuàng)建多線程
  • 多線程:必學(xué)函數(shù)講解

經(jīng)過總結(jié),Python創(chuàng)建多線程主要有如下兩種方法:

  • 函數(shù)

接下來,我們就來揭開多線程的神秘面紗。

. 學(xué)會使用函數(shù)創(chuàng)建多線程

在Python3中,Python提供了一個(gè)內(nèi)置模塊 threading.Thread,可以很方便地讓我們創(chuàng)建多線程。

threading.Thread() 一般接收兩個(gè)參數(shù):

  • 線程函數(shù)名:要放置線程讓其后臺執(zhí)行的函數(shù),由我們自已定義,注意不要加();
  • 線程函數(shù)的參數(shù):線程函數(shù)名所需的參數(shù),以元組的形式傳入。若不需要參數(shù),可以不指定。

舉個(gè)例子

 import time
 from threading import Thread
 
 # 自定義線程函數(shù)。
 def main(name="Python"):
   for i in range(2):
     print("hello", name)
     time.sleep(1)
# 創(chuàng)建線程01,不指定參數(shù)
thread_01 = Thread(target=main)
# 啟動線程01
thread_01.start()


# 創(chuàng)建線程02,指定參數(shù),注意逗號
thread_02 = Thread(target=main, args=("MING",))
# 啟動線程02
thread_02.start()

可以看到輸出

hello Python
hello MING
hello Python
hello MING

是不是超級簡單呢?別急,下面也是一樣簡單。

. 學(xué)會使用類創(chuàng)建多線程

相比較函數(shù)而言,使用類創(chuàng)建線程,會比較麻煩一點(diǎn)。

首先,我們要自定義一個(gè)類,對于這個(gè)類有兩點(diǎn)要求,

  • 必須繼承 threading.Thread 這個(gè)父類;
  • 必須覆寫 run 方法。

這里的 run 方法,和我們上面線程函數(shù)的性質(zhì)是一樣的,可以寫我們的業(yè)務(wù)邏輯程序。在 start() 后將會調(diào)用。

來看一下例子

為了方便對比,run函數(shù)我復(fù)用上面的main。

 import time
 from threading import Thread
 
 class MyThread(Thread):
   def __init__(self, name="Python"):
     # 注意,super().__init__() 一定要寫
     # 而且要寫在最前面,否則會報(bào)錯(cuò)。
     super().__init__()
     self.name=name

  def run(self):
    for i in range(2):
      print("hello", self.name)
      time.sleep(1)

if __name__ == '__main__':
  # 創(chuàng)建線程01,不指定參數(shù)
  thread_01 = MyThread()
  # 創(chuàng)建線程02,指定參數(shù)
  thread_02 = MyThread("MING")

  thread_01.start()
  thread_02.start()

當(dāng)然結(jié)果也是一樣的。

hello Python
hello MING
hello Python
hello MING

. 多線程:必學(xué)函數(shù)講解

學(xué)完了兩種創(chuàng)建線程的方式,你一定會驚嘆,咋么這么簡單,一點(diǎn)難度都沒有。

其實(shí)不然,上面我們的線程函數(shù) 為了方便理解,都使用的最簡單的代碼邏輯。而在實(shí)際使用當(dāng)中,多線程運(yùn)行期間,還會出現(xiàn)諸多問題,只是我們現(xiàn)在還沒體會到它的復(fù)雜而已。

不過,你也不必?fù)?dān)心,在后面的章節(jié)中,我會帶著大家一起來探討一下,都有哪些難題,應(yīng)該如何解決。

磨刀不誤吹柴工,我們首先得來認(rèn)識一下,Python給我們提供的 Thread 都有哪些函數(shù)和屬性,實(shí)現(xiàn)哪些功能。學(xué)習(xí)完這些,在后期的學(xué)習(xí)中,我們才能更加得以應(yīng)手。

經(jīng)過我的總結(jié),大約常用的方法有如下這些:

 t=Thread(target=func)
 
 # 啟動子線程
 t.start()
 
 # 阻塞子線程,待子線程結(jié)束后,再往下執(zhí)行
 t.join()
 
 # 判斷線程是否在執(zhí)行狀態(tài),在執(zhí)行返回True,否則返回False
t.is_alive()
t.isAlive()

# 設(shè)置線程是否隨主線程退出而退出,默認(rèn)為False
t.daemon = True
t.daemon = False

# 設(shè)置線程名
t.name = "My-Thread"

好了,Python線程基礎(chǔ)知識,我們大概都介紹完了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 批量獲取及驗(yàn)證HTTP代理的Python腳本

    批量獲取及驗(yàn)證HTTP代理的Python腳本

    這篇文章主要介紹了批量獲取及驗(yàn)證HTTP代理的Python腳本,需要的朋友可以參考下
    2017-04-04
  • 詳解Python遍歷文件和文件路徑拼接

    詳解Python遍歷文件和文件路徑拼接

    這篇文章主要為大家詳細(xì)介紹了Python遍歷文件和文件路徑拼接的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • 零基礎(chǔ)寫python爬蟲之打包生成exe文件

    零基礎(chǔ)寫python爬蟲之打包生成exe文件

    本文介紹了通過pyinstaller和pywin32兩個(gè)插件在windows環(huán)境下,將py文件打包成exe文件,有需要的朋友可以參考下
    2014-11-11
  • Python實(shí)現(xiàn)通訊錄功能

    Python實(shí)現(xiàn)通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • pytorch實(shí)現(xiàn)梯度下降和反向傳播圖文詳細(xì)講解

    pytorch實(shí)現(xiàn)梯度下降和反向傳播圖文詳細(xì)講解

    這篇文章主要介紹了pytorch實(shí)現(xiàn)梯度下降和反向傳播,反向傳播的目的是計(jì)算成本函數(shù)C對網(wǎng)絡(luò)中任意w或b的偏導(dǎo)數(shù)。一旦我們有了這些偏導(dǎo)數(shù),我們將通過一些常數(shù)α的乘積和該數(shù)量相對于成本函數(shù)的偏導(dǎo)數(shù)來更新網(wǎng)絡(luò)中的權(quán)重和偏差
    2023-04-04
  • Python實(shí)現(xiàn)截圖生成符合markdown的鏈接

    Python實(shí)現(xiàn)截圖生成符合markdown的鏈接

    之前是用的是typora來寫的文章,最近typora最近開始收費(fèi)了,所以就不想用了,于是找到了一個(gè)替代品MarkText。本文將介紹如何通過Python實(shí)現(xiàn)截圖自動生成符合markdown的鏈接,感興趣的可以了解一下
    2022-01-01
  • python下MySQLdb用法實(shí)例分析

    python下MySQLdb用法實(shí)例分析

    這篇文章主要介紹了python下MySQLdb用法,實(shí)例分析了Python中MySQLdb的安裝及使用技巧,包括增刪改查及亂碼處理的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • python實(shí)現(xiàn)從ftp上下載文件的實(shí)例方法

    python實(shí)現(xiàn)從ftp上下載文件的實(shí)例方法

    在本篇文章里小編給大家整理了關(guān)于python實(shí)現(xiàn)從ftp上下載文件的實(shí)例方法,需要的朋友們可以參考下。
    2020-07-07
  • Django 外鍵查詢的實(shí)現(xiàn)

    Django 外鍵查詢的實(shí)現(xiàn)

    今天學(xué)習(xí)了一下外鍵查詢的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • python docx 中文字體設(shè)置的操作方法

    python docx 中文字體設(shè)置的操作方法

    今天小編就為大家分享一篇python docx 中文字體設(shè)置的操作方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

衡山县| 白河县| 云龙县| 河池市| 宁海县| 富阳市| 武平县| 汤原县| 饶河县| 休宁县| 建宁县| 瑞金市| 阿鲁科尔沁旗| 扬中市| 嘉兴市| 山阳县| 卓尼县| 南开区| 珠海市| 安徽省| 加查县| 青神县| 东丽区| 来凤县| 阳江市| 福泉市| 阜新市| 宁乡县| 阿荣旗| 南江县| 九台市| 鹿邑县| 西青区| 五寨县| 郯城县| 新源县| 平舆县| 罗江县| 石渠县| 班戈县| 炉霍县|