Python 多執行緒

2021-10-03 22:35:54 字數 2547 閱讀 6296

python 中線程常用的有二種方式:例項化 thread、繼承實現

python3 執行緒中常用的兩個模組為:

thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 python3 中不能再使用"thread" 模組。為了相容性,python3 將 thread 重新命名為 "_thread"。

thread 語法:

thread(target=function, name=threadname, args)
引數說明:

**1:

from threading import current_thread, thread

import time

def runfun(num):

print(num, "子執行緒 work", current_thread().name)

time.sleep(2)

if __name__ == '__main__':

my_thread = thread(target=runfun, name="my_thread", args=(1,))

print(my_thread.name)

my_thread.start()

my_thread.join()

print("主線程結束")

開發中也是用的最多的,使用物件導向完成,利於功能的擴充套件。

**2:

from threading import thread, current_thread

import time

from utils.printline import pline

# 示例: 1 - 建立執行緒 - 繼承實現

class mythread1(thread):

def __init__(self, threadname, param1, param2):

# 這句話不能少

# name:指定執行緒名稱

thread.__init__(self, name=threadname)

self.param1 = param1

self.param2 = param2

# 固定方法名,不能隨便起

def run(self):

print(self.name, ":", self.param1, "-", self.param2)

print("run child thread, name:", current_thread().name)

time.sleep(2)

# 示例: 2 - 建立執行緒 - 繼承實現

class mythread2(thread):

def __init__(self, param1, param2):

# 這句話不能少

super(mythread2, self).__init__() # 重構run函式必須要寫

self.param1 = param1

self.param2 = param2

def run(self):

print(self.name, ":", self.param1, "-", self.param2)

print("run child thread, name:", current_thread().name)

time.sleep(2)

if __name__ == '__main__':

print('主線程開始')

pline(1, "建立執行緒 - 繼承實現")

t1 = mythread1("t1", 1, 2)

print("t1.name:", t1.name)

t1.start()

t2 = mythread1('t2', 3, 4)

print("t2.name:", t2.name)

t2.start()

t1.join()

t2.join()

pline()

pline(2, "建立執行緒 - 繼承實現")

t3 = mythread2(5, 6)

print("t3.name:", t3.name)

t3.start()

t3.join()

t4 = mythread2(7, 8)

print("t4.name:", t4.name)

t4.start()

t4.join()

pline()

print('主程序結束')

注意:如果使用繼承的方式實現多執行緒需要在 __init__() 方法中新增以下語句(任選其一即可):

thread.__init__(self, name=threadname)

super(mythread2, self).__init__()

python多執行緒 python多執行緒

通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...

python多執行緒詳解 Python多執行緒詳解

前言 由於最近的工作中一直需要用到python去處理資料,而在面對大量的資料時,python多執行緒的優勢就展現出來了。因而藉此機會,盡可能詳盡地來闡述python多執行緒。但對於其更底層的實現機制,在此不做深究,僅是對於之前的一知半解做個補充,也希望初學者能夠通過這篇文章,即便是照葫蘆畫瓢,也能夠...

python程式多執行緒 PYTHON多執行緒

在單執行緒的情況下,程式是逐條指令順序執行的。同一時間只做乙個任務,完成了乙個任務再進行下乙個任務。比如有5個人吃飯,單執行緒一次只允許乙個人吃,乙個人吃完了另乙個人才能接著吃,假如每個人吃飯都需要1分鐘,5個人就需要5分鐘。多執行緒的情況下,程式就會同時進行多個任務,雖然在同一時刻也只能執行某個任...