這篇文章給大家分享的是有關(guān)python中線程處理之threading模塊的示例分析的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
成都創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供沙坡頭企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為沙坡頭眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
python是支持多線程的,并且是native的線程。主要是通過(guò)thread和threading這兩個(gè)模塊來(lái)實(shí)現(xiàn)的。thread是比較底層的模 塊,threading是對(duì)thread做了一些包裝的,可以更加方便的被使用。這里需要提一下的是python對(duì)線程的支持還不夠完善,不能利用多 CPU,但是下個(gè)版本的python中已經(jīng)考慮改進(jìn)這點(diǎn),讓我們拭目以待吧。
threading模塊里面主要是對(duì)一些線程的操作對(duì)象化了,創(chuàng)建了叫Thread的class。一般來(lái)說(shuō),使用線程有兩種模式,一種是創(chuàng)建線程要執(zhí)行的 函數(shù),把這個(gè)函數(shù)傳遞進(jìn)Thread對(duì)象里,讓它來(lái)執(zhí)行;另一種是直接從Thread繼承,創(chuàng)建一個(gè)新的class,把線程執(zhí)行的代碼放到這個(gè)新的 class里。我們來(lái)看看這兩種做法吧。
#-*- encoding: gb2312 -*- 02 import string, threading, time 03 04 def thread_main(a): 05 global count, mutex 06 # 獲得線程名 07 threadname = threading.currentThread().getName() 08 09 for x in xrange(0, int(a)): 10 # 取得鎖 11 mutex.acquire() 12 count = count + 1 13 # 釋放鎖 14 mutex.release() 15 print threadname, x, count 16 time.sleep(1) 17 18 def main(num): 19 global count, mutex 20 threads = [] 21 22 count = 1 23 # 創(chuàng)建一個(gè)鎖 24 mutex = threading.Lock() 25 # 先創(chuàng)建線程對(duì)象 26 for x in xrange(0, num): 27 threads.append(threading.Thread(target=thread_main, args=(10,))) 28 # 啟動(dòng)所有線程 29 for t in threads: 30 t.start() 31 # 主線程中等待所有子線程退出 32 for t in threads: 33 t.join() 34 35 36 if __name__ == '__main__': 37 num = 4 38 # 創(chuàng)建4個(gè)線程 39 main(4) [代碼] [Python]代碼 view sourceprint? 01 #-*- encoding: gb2312 -*- 02 import threading 03 import time 04 05 class Test(threading.Thread): 06 def __init__(self, num): 07 threading.Thread.__init__(self) 08 self._run_num = num 09 10 def run(self): 11 global count, mutex 12 threadname = threading.currentThread().getName() 13 14 for x in xrange(0, int(self._run_num)): 15 mutex.acquire() 16 count = count + 1 17 mutex.release() 18 print threadname, x, count 19 time.sleep(1) 20 21 if __name__ == '__main__': 22 global count, mutex 23 threads = [] 24 num = 4 25 count = 1 26 # 創(chuàng)建鎖 27 mutex = threading.Lock() 28 # 創(chuàng)建線程對(duì)象 29 for x in xrange(0, num): 30 threads.append(Test(10)) 31 # 啟動(dòng)線程 32 for t in threads: 33 t.start() 34 # 等待子線程結(jié)束 35 for t in threads: 36 t.join()
感謝各位的閱讀!關(guān)于“python中線程處理之threading模塊的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!