欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

Python高級——多任務(wù)編程之線程 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 技術(shù)分享 >

Python高級——多任務(wù)編程之線程

發(fā)表時間:2020-10-19

發(fā)布人:葵宇科技

瀏覽次數(shù):48

文章目錄

  • 線程概念
    • 1. 線程的介紹
    • 2. 線程的概念
    • 3. 線程的作用
  • 多線程的使用
    • 1. 導(dǎo)入線程模塊
    • 2. 線程類Thread參數(shù)說明
    • 3. 啟動線程
    • 4. 多線程完成多任務(wù)的代碼
  • 線程執(zhí)行帶有參數(shù)的任務(wù)
    • 1. 線程執(zhí)行帶有參數(shù)的任務(wù)的介紹
    • 2. args參數(shù)的使用
    • 3. kwargs參數(shù)的使用
  • 線程注意事項

線程概念

1. 線程的介紹

在Python中,想要實現(xiàn)多任務(wù)除了使用進程,還可以使用線程來完成,線程是實現(xiàn)多任務(wù)的另外一種方式。

2. 線程的概念

線程是進程中執(zhí)行代碼的一個分支,每個執(zhí)行分支(線程)要想工作執(zhí)行代碼需要cpu進行調(diào)度 ,也就是說線程是cpu調(diào)度的基本單位,每個進程至少都有一個線程,而這個線程就是我們通常說的主線程。

3. 線程的作用

多線程可以完成多任務(wù)

多線程效果圖:
在這里插入圖片描述

多線程的使用

1. 導(dǎo)入線程模塊

#導(dǎo)入線程模塊
import threading

2. 線程類Thread參數(shù)說明

Thread([group [, target [, name [, args [, kwargs]]]]])

  • group: 線程組,目前只能使用None
  • target: 執(zhí)行的目標(biāo)任務(wù)名
  • args: 以元組的方式給執(zhí)行任務(wù)傳參
  • kwargs: 以字典方式給執(zhí)行任務(wù)傳參
  • name: 線程名,一般不用設(shè)置

3. 啟動線程

啟動線程使用start方法

4. 多線程完成多任務(wù)的代碼

import threading
import time

# 唱歌任務(wù)
def sing():
    # 擴展: 獲取當(dāng)前線程
    # print("sing當(dāng)前執(zhí)行的線程為:", threading.current_thread())
    for i in range(3):
        print("正在唱歌...%d" % i)
        time.sleep(1)

# 跳舞任務(wù)
def dance():
    # 擴展: 獲取當(dāng)前線程
    # print("dance當(dāng)前執(zhí)行的線程為:", threading.current_thread())
    for i in range(3):
        print("正在跳舞...%d" % i)
        time.sleep(1)


if __name__ == '__main__':
    # 擴展: 獲取當(dāng)前線程
    # print("當(dāng)前執(zhí)行的線程為:", threading.current_thread())
    # 創(chuàng)建唱歌的線程
    # target: 線程執(zhí)行的函數(shù)名
    sing_thread = threading.Thread(target=sing)

    # 創(chuàng)建跳舞的線程
    dance_thread = threading.Thread(target=dance)

    # 開啟線程
    sing_thread.start()
    dance_thread.start()

執(zhí)行結(jié)果:

正在唱歌...0
正在跳舞...0
正在唱歌...1
正在跳舞...1
正在唱歌...2
正在跳舞...2

線程執(zhí)行帶有參數(shù)的任務(wù)

1. 線程執(zhí)行帶有參數(shù)的任務(wù)的介紹

前面我們使用線程執(zhí)行的任務(wù)是沒有參數(shù)的,假如我們使用線程執(zhí)行的任務(wù)帶有參數(shù),如何給函數(shù)傳參呢?

Thread類執(zhí)行任務(wù)并給任務(wù)傳參數(shù)有兩種方式:

args 表示以元組的方式給執(zhí)行任務(wù)傳參
kwargs 表示以字典方式給執(zhí)行任務(wù)傳參

2. args參數(shù)的使用

示例代碼:

import threading
import time


# 帶有參數(shù)的任務(wù)
def task(count):
    for i in range(count):
        print("任務(wù)執(zhí)行中..")
        time.sleep(0.2)
    else:
        print("任務(wù)執(zhí)行完成")


if __name__ == '__main__':
    # 創(chuàng)建子線程
    # args: 以元組的方式給任務(wù)傳入?yún)?shù)
    sub_thread = threading.Thread(target=task, args=(5,))
    sub_thread.start()

執(zhí)行結(jié)果:

任務(wù)執(zhí)行中…
任務(wù)執(zhí)行中…
任務(wù)執(zhí)行中…
任務(wù)執(zhí)行中…
任務(wù)執(zhí)行中…
任務(wù)執(zhí)行完成

3. kwargs參數(shù)的使用

示例代碼:

import threading
import time


# 帶有參數(shù)的任務(wù)
def task(count):
    for i in range(count):
        print("任務(wù)執(zhí)行中..")
        time.sleep(0.2)
    else:
        print("任務(wù)執(zhí)行完成")


if __name__ == '__main__':
    # 創(chuàng)建子線程
    # kwargs: 表示以字典方式傳入?yún)?shù)
    sub_thread = threading.Thread(target=task, kwargs={"count": 3})
    sub_thread.start()

執(zhí)行結(jié)果:


任務(wù)執(zhí)行中..
任務(wù)執(zhí)行中..
任務(wù)執(zhí)行中..
任務(wù)執(zhí)行完成

線程注意事項

  • 線程之間執(zhí)行是無序的
  • 主線程會等待所有的子線程執(zhí)行結(jié)束再結(jié)束
  • 線程之間共享全局變量
  • 線程之間共享全局變量數(shù)據(jù)出現(xiàn)錯誤問題

相關(guān)案例查看更多