Python多線程編程(二):?jiǎn)?dòng)線程的兩種方法
在Python中我們主要是通過thread和threading這兩個(gè)模塊來實(shí)現(xiàn)的,其中Python的threading模塊是對(duì)thread做了一些包裝的,可以更加方便的被使用,所以我們使用threading模塊實(shí)現(xiàn)多線程編程。一般來說,使用線程有兩種模式,一種是創(chuàng)建線程要執(zhí)行的函數(shù),把這個(gè)函數(shù)傳遞進(jìn)Thread對(duì)象里,讓它來執(zhí)行;另一種是直接從Thread繼承,創(chuàng)建一個(gè)新的class,把線程執(zhí)行的代碼放到這個(gè)新的 class里。
將函數(shù)傳遞進(jìn)Thread對(duì)象
'''
Created on 2012-9-5
@author: walfred
@module: thread.ThreadTest1
@description:
'''
import threading
def thread_fun(num):
for n in range(0, int(num)):
print " I come from %s, num: %s" %( threading.currentThread().getName(), n)
def main(thread_num):
thread_list = list();
# 先創(chuàng)建線程對(duì)象
for i in range(0, thread_num):
thread_name = "thread_%s" %i
thread_list.append(threading.Thread(target = thread_fun, name = thread_name, args = (20,)))
# 啟動(dòng)所有線程
for thread in thread_list:
thread.start()
# 主線程中等待所有子線程退出
for thread in thread_list:
thread.join()
if __name__ == "__main__":
main(3)
程序啟動(dòng)了3個(gè)線程,并且打印了每一個(gè)線程的線程名字,這個(gè)比較簡(jiǎn)單吧,處理重復(fù)任務(wù)就派出用場(chǎng)了,下面介紹使用繼承threading的方式;
繼承自threading.Thread類
'''
Created on 2012-9-6
@author: walfred
@module: thread.ThreadTest2
'''
import threading
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self);
def run(self):
print "I am %s" %self.name
if __name__ == "__main__":
for thread in range(0, 5):
t = MyThread()
t.start()
接下來的文章,將會(huì)介紹如何控制這些線程,包括子線程的退出,子線程是否存活及將子線程設(shè)置為守護(hù)線程(Daemon)。
相關(guān)文章
python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼
今天小編就為大家分享一篇python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
pytorch LayerNorm參數(shù)的用法及計(jì)算過程
這篇文章主要介紹了pytorch LayerNorm參數(shù)的用法及計(jì)算過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python中schedule模塊定時(shí)任務(wù)的使用方法(2)
這篇文章主要介紹了Python中schedule模塊定時(shí)任務(wù)的使用方法,文章基于上一篇文章的內(nèi)容展開的后續(xù),需要的朋友可以參考一下2022-05-05
python的numpy模塊實(shí)現(xiàn)邏輯回歸模型
這篇文章主要為大家詳細(xì)介紹了python的numpy模塊實(shí)現(xiàn)邏輯回歸模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
Python+Matplotlib+LaTeX玩轉(zhuǎn)數(shù)學(xué)公式
這篇文章主要為大家介紹了如何在Matplotlib中使用LaTeX?公式和符號(hào)以及Python如何生成LaTeX數(shù)學(xué)公式。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-02-02
基于Flask實(shí)現(xiàn)一個(gè)智能的多語言Hello World服務(wù)器
這篇文章主要為大家詳細(xì)介紹了如何使用Flask框架創(chuàng)建一個(gè)智能的多語言Hello World服務(wù)器,能夠自動(dòng)檢測(cè)訪問者的瀏覽器語言設(shè)置,需要的可以了解下2025-03-03
Python Opencv實(shí)現(xiàn)單目標(biāo)檢測(cè)的示例代碼
這篇文章主要介紹了Python Opencv實(shí)現(xiàn)單目標(biāo)檢測(cè)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09

