久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python多線程學習(一,、線程的使用)

 望風de鳥 2013-11-28

 一,、Python中的線程使用:

    Python中使用線程有兩種方式:函數(shù)或者用類來包裝線程對象。

1,、  函數(shù)式:調用thread模塊中的start_new_thread()函數(shù)來產生新線程,。如下例:

  1. import time  
  2. import thread  
  3. def timer(no, interval):  
  4.     cnt = 0  
  5.     while cnt<10:  
  6.         print 'Thread:(%d) Time:%s/n'%(no, time.ctime())  
  7.         time.sleep(interval)  
  8.         cnt+=1  
  9.     thread.exit_thread()  
  10.      
  11.    
  12. def test(): #Use thread.start_new_thread() to create 2 new threads   
  13.     thread.start_new_thread(timer, (1,1))  
  14.     thread.start_new_thread(timer, (2,2))  
  15.    
  16. if __name__=='__main__':  
  17.     test()  
 

    上面的例子定義了一個線程函數(shù)timer,它打印出10條時間記錄后退出,每次打印的間隔由interval參數(shù)決定,。thread.start_new_thread(function, args[, kwargs])的第一個參數(shù)是線程函數(shù)(本例中的timer方法),,第二個參數(shù)是傳遞給線程函數(shù)的參數(shù),它必須是tuple類型,,kwargs是可選參數(shù),。

    線程的結束可以等待線程自然結束,也可以在線程函數(shù)中調用thread.exit()thread.exit_thread()方法,。

2,、  創(chuàng)建threading.Thread的子類來包裝一個線程對象,如下例:

  1. import threading  
  2. import time  
  3. class timer(threading.Thread): #The timer class is derived from the class threading.Thread   
  4.     def __init__(self, num, interval):  
  5.         threading.Thread.__init__(self)  
  6.         self.thread_num = num  
  7.         self.interval = interval  
  8.         self.thread_stop = False  
  9.    
  10.     def run(self): #Overwrite run() method, put what you want the thread do here   
  11.         while not self.thread_stop:  
  12.             print 'Thread Object(%d), Time:%s/n' %(self.thread_num, time.ctime())  
  13.             time.sleep(self.interval)  
  14.     def stop(self):  
  15.         self.thread_stop = True  
  16.          
  17.    
  18. def test():  
  19.     thread1 = timer(11)  
  20.     thread2 = timer(22)  
  21.     thread1.start()  
  22.     thread2.start()  
  23.     time.sleep(10)  
  24.     thread1.stop()  
  25.     thread2.stop()  
  26.     return  
  27.    
  28. if __name__ == '__main__':  
  29.     test()  
 

   

    就我個人而言,,比較喜歡第二種方式,,即創(chuàng)建自己的線程類,必要時重寫threading.Thread類的方法,,線程的控制可以由自己定制,。

threading.Thread類的使用:

1,在自己的線程類的__init__里調用threading.Thread.__init__(self, name = threadname)

Threadname為線程的名字

2,, run(),,通常需要重寫,編寫代碼實現(xiàn)做需要的功能,。

3,,getName(),,獲得線程對象名稱

4setName(),,設置線程對象名稱

5,,start(),啟動線程

6,,jion([timeout]),,等待另一線程結束后再運行,。

7,,setDaemon(bool),設置子線程是否隨主線程一起結束,,必須在start()之前調用,。默認為False

8,,isDaemon(),,判斷線程是否隨主線程一起結束。

9,,isAlive(),,檢查線程是否在運行中。

    此外threading模塊本身也提供了很多方法和其他的類,,可以幫助我們更好的使用和管理線程,。可以參看http://www./doc/2.5.2/lib/module-threading.html,。

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多