• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            開(kāi)源之路

            憶往昔, 項(xiàng)羽不過(guò)江. 江東好風(fēng)光! 今振臂一呼,率甲三千, 試問(wèn)天!
            posts - 86, comments - 55, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(liá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 -*-
            import string, threading, time

            def thread_main(a):
                
            global count, mutex
                
            # 獲得線程名
                threadname = threading.currentThread().getName()
                
                
            for x in xrange(0, int(a)):
                    
            # 取得鎖
                    mutex.acquire()
                    count 
            = count + 1
                    
            # 釋放鎖
                    mutex.release()
                    
            print threadname, x, count
                    time.sleep(
            1)
                
            def main(num):
                
            global count, mutex
                threads 
            = []
                
                count 
            = 1
                
            # 創(chuàng)建一個(gè)鎖
                mutex = threading.Lock()
                
            # 先創(chuàng)建線程對(duì)象
                for x in xrange(0, num):
                    threads.append(threading.Thread(target
            =thread_main, args=(10,)))
                
            # 啟動(dòng)所有線程
                for t in threads:
                    t.start()
                
            # 主線程中等待所有子線程退出
                for t in threads:
                    t.join()  
                
                
            if __name__ == '__main__':
                num 
            = 4
                
            # 創(chuàng)建4個(gè)線程
                main(4)

            上面的就是第一種做法,這種做法是很常見(jiàn)的,下面是另一種,曾經(jīng)使用過(guò)Java的朋友應(yīng)該很熟悉這種模式:

            #-*- encoding: gb2312 -*-
            import threading
            import time

            class Test(threading.Thread):
                
            def __init__(self, num):
                    threading.Thread.
            __init__(self)
                    self._run_num 
            = num
                
                
            def run(self):
                    
            global count, mutex
                    threadname 
            = threading.currentThread().getName()
                
                    
            for x in xrange(0, int(self._run_num)):
                        mutex.acquire()
                        count 
            = count + 1
                        mutex.release()
                        
            print threadname, x, count
                        time.sleep(
            1)

            if __name__ == '__main__':
                
            global count, mutex
                threads 
            = []
                num 
            = 4
                count 
            = 1
                
            # 創(chuàng)建鎖
                mutex = threading.Lock()
                
            # 創(chuàng)建線程對(duì)象
                for x in xrange(0, num):
                    threads.append(Test(
            10))
                
            # 啟動(dòng)線程
                for t in threads:
                    t.start()
                
            # 等待子線程結(jié)束
                for t in threads:
                    t.join() 

            Feedback

            # re: python模塊之threading: 在python中使用多線程  回復(fù)  更多評(píng)論   

            2007-12-27 23:29 by 秦歌
            好東東!
            国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲乱码中文字幕久久孕妇黑人| 伊人色综合久久天天人手人婷| 精品熟女少妇av免费久久| 久久99热这里只有精品国产| 无码日韩人妻精品久久蜜桃| 久久精品亚洲男人的天堂| 久久天天躁狠狠躁夜夜avapp| 久久青青草原精品国产不卡| 国产美女久久精品香蕉69| 亚洲国产精品无码久久青草| 久久国产精品久久久| 久久亚洲AV成人出白浆无码国产| 性做久久久久久久久| 91精品国产综合久久香蕉| 亚洲∧v久久久无码精品| 久久99国产精品久久99小说| 国产精品免费久久| 久久综合丝袜日本网| 99国产欧美精品久久久蜜芽| 99久久国产亚洲综合精品| 精品久久国产一区二区三区香蕉| 久久亚洲国产中v天仙www| 精品国产福利久久久| 久久国产精品一国产精品金尊| 国产aⅴ激情无码久久| 蜜桃麻豆WWW久久囤产精品| 亚洲国产日韩综合久久精品| 久久99这里只有精品国产| 精品久久久久久国产| 国产亚洲精久久久久久无码77777 国产亚洲精品久久久久秋霞 | 久久久这里有精品中文字幕| 久久艹国产| 一级a性色生活片久久无| 亚洲国产成人乱码精品女人久久久不卡 | 久久AAAA片一区二区| 青青草国产97免久久费观看| 久久久久久久综合狠狠综合| 久久久无码精品亚洲日韩京东传媒 | 精品熟女少妇av免费久久| 99久久免费国产特黄|