python多線程有幾種實現方法

來源:互聯網
上載者:User

標籤:

python多線程有幾種實現方法,都是什嗎?

       目前python 提供了幾種多線程實現方式 thread,threading,multithreading ,其中thread模組比較底層,而threading模組是對thread做了一些封裝,可以更加方便的被使用。2.7版本之前python對線程的支援還不夠完善,不能利用多核CPU,但是2.7版本的python中已經考慮改進這點,出現了multithreading  模組。threading模組裡面主要是對一些線程的操作對象化,建立Thread的class。

       一般來說,使用線程有兩種模式:

       A 建立線程要執行的函數,把這個函數傳遞進Thread對象裡,讓它來執行;
       B 繼承Thread類,建立一個新的class,將要執行的代碼 寫到run函數裡面。


第一種 建立函數並且傳入Thread 對象中

    import threading,time    from time import sleep, ctime    def now() :        return str( time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime() ) )    def test(nloop, nsec):        print 'start loop', nloop, 'at:', now()        sleep(nsec)        print 'loop', nloop, 'done at:', now()    def main():        print 'starting at:',now()        threadpool=[]        for i in xrange(10):            th = threading.Thread(target= test,args= (i,2))            threadpool.append(th)        for th in threadpool:            th.start()        for th in threadpool :            threading.Thread.join( th )        print 'all Done at:', now()    if __name__ == '__main__':            main()


第二種是建立一個新的class,將要執行的代碼 寫到run函數裡面。

    import threading ,time    from time import sleep, ctime    def now() :        return str( time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime() ) )    class myThread (threading.Thread) :          """docstring for myThread"""          def __init__(self, nloop, nsec) :              super(myThread, self).__init__()              self.nloop = nloop              self.nsec = nsec          def run(self):              print 'start loop', self.nloop, 'at:', ctime()              sleep(self.nsec)              print 'loop', self.nloop, 'done at:', ctime()    def main():         thpool=[]         print 'starting at:',now()                 for i in xrange(10):             thpool.append(myThread(i,2))                      for th in thpool:             th.start()                for th in thpool:             th.join()                 print 'all Done at:', now()    if __name__ == '__main__':            main()


python多線程有幾種實現方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.