• <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>

            開源之路

            憶往昔, 項羽不過江. 江東好風光! 今振臂一呼,率甲三千, 試問天!
            posts - 86, comments - 55, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            python模塊之threading: 在python中使用多線程

            Posted on 2007-12-26 18:04 江邊之鳥 閱讀(10196) 評論(1)  編輯 收藏 引用 所屬分類: python
            python是支持多線程的,并且是native的線程。主要是通過thread和threading這兩個模塊來實現的。thread是比較底層的模 塊,threading是對thread做了一些包裝的,可以更加方便的被使用。這里需要提一下的是python對線程的支持還不夠完善,不能利用多 CPU,但是下個版本的python中已經考慮改進這點,讓我們拭目以待吧。
                threading模塊里面主要是對一些線程的操作對象化了,創建了叫Thread的class。一般來說,使用線程有兩種模式,一種是創建線程要執行的 函數,把這個函數傳遞進Thread對象里,讓它來執行;另一種是直接從Thread繼承,創建一個新的class,把線程執行的代碼放到這個新的 class里。我們來看看這兩種做法吧。

            #-*- 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
                
            # 創建一個鎖
                mutex = threading.Lock()
                
            # 先創建線程對象
                for x in xrange(0, num):
                    threads.append(threading.Thread(target
            =thread_main, args=(10,)))
                
            # 啟動所有線程
                for t in threads:
                    t.start()
                
            # 主線程中等待所有子線程退出
                for t in threads:
                    t.join()  
                
                
            if __name__ == '__main__':
                num 
            = 4
                
            # 創建4個線程
                main(4)

            上面的就是第一種做法,這種做法是很常見的,下面是另一種,曾經使用過Java的朋友應該很熟悉這種模式:

            #-*- 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
                
            # 創建鎖
                mutex = threading.Lock()
                
            # 創建線程對象
                for x in xrange(0, num):
                    threads.append(Test(
            10))
                
            # 啟動線程
                for t in threads:
                    t.start()
                
            # 等待子線程結束
                for t in threads:
                    t.join() 

            Feedback

            # re: python模塊之threading: 在python中使用多線程  回復  更多評論   

            2007-12-27 23:29 by 秦歌
            好東東!
            久久综合九色综合久99| 狠狠色综合网站久久久久久久| 午夜精品久久影院蜜桃| 久久乐国产综合亚洲精品| 亚洲国产欧美国产综合久久 | 精品午夜久久福利大片| 97久久精品人人做人人爽| 久久久久se色偷偷亚洲精品av| 久久99精品久久久久子伦| 国产91色综合久久免费| 中文字幕无码久久人妻| 97久久综合精品久久久综合| 亚洲日韩欧美一区久久久久我| 7777久久亚洲中文字幕| 四虎国产精品成人免费久久| 国内精品久久久久伊人av| 久久毛片一区二区| 亚洲欧洲久久久精品| 精品久久久久中文字| AA级片免费看视频久久| 狠狠色丁香久久婷婷综| 久久亚洲中文字幕精品有坂深雪| 久久久久国产一级毛片高清板| 久久久久一本毛久久久| 国产精品久久久久9999| 亚洲国产精品无码久久久秋霞2 | 亚洲国产精品无码久久98| 亚洲人成无码网站久久99热国产| 99久久国产综合精品网成人影院| 久久精品国产亚洲av麻豆色欲 | 97精品伊人久久久大香线蕉| 999久久久无码国产精品| 少妇久久久久久被弄高潮| 久久亚洲AV无码精品色午夜麻豆| 久久天天躁狠狠躁夜夜2020老熟妇 | 久久强奷乱码老熟女网站| 亚洲精品WWW久久久久久| 武侠古典久久婷婷狼人伊人| 国产精品成人久久久久久久| 久久精品国产WWW456C0M| 久久人人超碰精品CAOPOREN|