python多執行緒函式 python之路 多執行緒

2021-10-19 21:04:24 字數 2899 閱讀 6334

1、多執行緒模組 import threading

2、用函式寫乙個多執行緒例子

import threading,time

def talk(name):

print(name,"is tlaking",threading.current_thread(),threading.active_count())

time.sleep(2)

print("thread done ....",name)

p1 = threading.thread(target=talk,args = ("alex",))

p2 = threading.thread(target=talk,args = ("japhi",))

p1.start()

p2.start()

結果是:

alex is tlaking 2

japhi is tlaking3

thread done .... alex

thread done .... japhi

其中threading.current_thread() 用來列印當前的執行緒,threading.active_count()列印執行緒數,結果是一起執行。

3、用物件導向的方式寫乙個多執行緒

import threading,time

class mythread(threading.thread):

def __init__(self,name):

super(mythread,self).__init__()

self.name = name

def run(self): #必須是run

print(self.name,"is tlaking")

time.sleep(2)

p3 = mythread("alex")

p4 = mythread("japhi")

p3.start()

p4.start()

但是,物件導向的形式中的方法名必須是run

4、join()方法

join方法是指當前執行緒執行完才能繼續執行下乙個執行緒,**示例

import threading,time

start_time = time.time()

def talk(name):

print(name,"is tlaking",threading.current_thread(),threading.active_count())

time.sleep(2)

print("thread done ....",name)

p1 = threading.thread(target=talk,args = ("alex",))

p2 = threading.thread(target=talk,args = ("japhi",))

p1.start()

p1.join()

p2.start()

print("cost:",time.time() - start_time)

結果是:

先列印:alex is tlaking 2

2秒後。。。

列印:thread done .... alex

japhi is tlaking2

cost: 2.0001144409179688

2秒後列印:thread done .... japhi

等1執行緒執行完後才執行執行緒2

4、以乙個迴圈的例子:

import threading,time

start_time = time.time()

def talk(name):

print(name,"is tlaking",threading.current_thread(),threading.active_count())

time.sleep(2)

print("thread done ....",name)

res =

for i in range(10):

p1 = threading.thread(target=talk,args = (i,)) #多執行緒併發,target是任務,args是引數,引數後面一定要加,

p1.setdaemon(true) # 把當前執行緒變為守護執行緒

p1.start()

for obj in res:

obj.join()

print("cost:",time.time() - start_time)

計算10個執行緒都結束後花的時間,結果是cost: 2.0021145343780518

5、守護執行緒

t.setdaemon(true)   將t這個執行緒設為守護執行緒,主線程**結束後不會等t執行緒是否結束,直接退出程式

import threading,time

start_time = time.time()

def talk(name):

print(name,"is tlaking",threading.current_thread(),threading.active_count())

time.sleep(2)

print("thread done ....",name)

for i in range(10):

p1 = threading.thread(target=talk,args = (i,)) #多執行緒併發,target是任務,args是引數,引數後面一定要加,

p1.setdaemon(true) # 把當前執行緒變為守護執行緒

p1.start()

print("cost:",time.time() - start_time)

結果是:

python多執行緒函式 Python多執行緒

python使用多執行緒有兩種方式 函式或者用類來包裝執行緒物件 函式式 呼叫thread模組中的start new thread 函式來產生新執行緒 thread.start new thread function,args kwargs function 執行緒函式 args 執行緒引數,必須是...

python多執行緒 python多執行緒

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

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

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