Python知識分享網(wǎng) - 專業(yè)的Python學習網(wǎng)站 學Python,上Python222
Python 通過threading模塊實現(xiàn)多線程
匿名網(wǎng)友發(fā)布于:2023-09-13 10:33:50
(侵權舉報)

Python 7天快速入門完整視頻教程https://www.bilibili.com/video/BV1o84y1Z7J1

 

Python    通過threading模塊實現(xiàn)多線程

 

 

我們可以使用threading模塊的Thread類的構造器來創(chuàng)建線程

def _ init _(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None):

上面的構造器涉及如下幾個參數(shù)。

group:指定該線程所屬的線程組。目前該參數(shù)還未實現(xiàn),因此它只能設為None。

target:指定該線程要調度的目標方法。

name:線程名稱,一般不用設置

args:指定一個元組,以位置參數(shù)的形式為 target 指定的函數(shù)傳入?yún)?shù)。元組的第一個元素傳給target函數(shù)的第一個參數(shù),元組的第二個元素傳給target函數(shù)的第二個參數(shù)……依此類推。

kwargs:指定一個字典,以關鍵字參數(shù)的形式為target 指定的函數(shù)傳入?yún)?shù)。

daemon:指定所構建的線程是否為后代線程。

 

我們看下實例:

 

import time


def wishing():
    while True:
        print("洗菜菜...啦啦啦")
        time.sleep(1)


def cooking():
    while True:
        print("燒飯,燒菜...啦啦啦")
        time.sleep(1)


if __name__ == '__main__':
    wishing()
    cooking()

 

運行輸出的,一直是洗菜。

如果我們不用多線程,無法實現(xiàn)兩個任務一起執(zhí)行。

 

我們使用多線程實現(xiàn)代碼:

 

import threading
import time


def wishing():
    while True:
        print("洗菜菜...啦啦啦")
        time.sleep(1)


def cooking():
    while True:
        print("煮飯,燒菜...啦啦啦")
        time.sleep(1)


if __name__ == '__main__':
    # 創(chuàng)建洗菜線程
    wishing_thread = threading.Thread(target=wishing)
    # 創(chuàng)建煮飯,燒菜線程
    cooking_thread = threading.Thread(target=cooking)

    # 啟動線程
    wishing_thread.start()
    cooking_thread.start()

 

傳參:

 

import threading
import time


def wishing(msg):
    while True:
        print(msg)
        time.sleep(1)


def cooking(msg):
    while True:
        print(msg)
        time.sleep(1)


if __name__ == '__main__':
    # 創(chuàng)建洗菜線程
    wishing_thread = threading.Thread(target=wishing, args=("洗菜菜...啦啦啦",))
    # 創(chuàng)建煮飯,燒菜線程
    cooking_thread = threading.Thread(target=cooking, kwargs={"msg": "煮飯,燒菜...啦啦啦"})

    # 啟動線程
    wishing_thread.start()
    cooking_thread.start()

 

 

 

轉載自: