Python多線程編程的兩種方式

Python中若是要使用線程的話,python的lib中提供了兩種方式。一種是函數式,一種是用類來包裝的線程對象。(例子已經稍加修改)python

一、調用thread模塊中的start_new_thread()函數來產生新的線程,請看代碼:編程

 

Python語言 臨時自用代碼
import  time
import  thread
import  sys

TIMEOUT  =  20

def  myThread( no ,  interval ):
     timeTotal  =  0
     while  True :
         if  timeTotal  <  TIMEOUT :
             print  "Thread( %d ): timeTotal( %d) \n " %( no ,  timeTotal)
             timeTotal  +=  interval
         else :
             print  "Thread( %d ) exits! \n " % no
             break

def  test ():
     thread . start_new_thread( myThread , ( 1 ,  2))
     thread . start_new_thread( myThread , ( 2 ,  3))

if  __name__  ==  '__main__' :
     test()

 

這個是
thread.start_new_thread(function,args[,kwargs])
函數原型,其中 function參數是你將要調用的線程函數;args是講傳遞給你的線程函數的參數,他必須是個tuple類型;而kwargs是可選的參數。
線 程的結束通常依靠線程函數的天然結束;也能夠在線程函數中調用thread.exit(),他拋出SystemExit exception,達到退出線程的目的。多線程

二、經過調用threading模塊繼承threading.Thread類來包裝一個線程對象。請看代碼函數

 

Python語言 臨時自用代碼
import  threading
import  time

class  MyThread( threading . Thread ):
     def  __init__( self ,  no ,  interval ):
         threading . Thread . __init__( self)
         self . no  =  no
         self . interval  =  interval

     def  run( self ):
         while  self . interval  >  0 :
             print  "ThreadObject( %d ) : total time( %d) \n " %( self . no ,  self . interval)
             time . sleep( 1)
             self . interval  -=  1
def  test ():
     thread1  =  MyThread( 1 ,  10)
     thread2  =  MyThread( 2 ,  20)
     thread1 . start()
     thread2 . start()
     thread1 . join()
     thread2 . join()

if  __name__  ==  '__main__' :
     test()

 

其實thread和threading的模塊中還包含了其餘的不少關於多線程編程的東西,例如鎖、定時器、得到激活線程列表等等,請你們仔細參考 python的文檔!spa

相關文章
相關標籤/搜索