1. 程式人生 > >Python 學習筆記 多線程-threading

Python 學習筆記 多線程-threading

reading aps pri from src -- append tar ttr

    1. 多線程使用示例
      import threading
      from time import sleep, ctime
      
      def func():
          print threading.current_thread().name, start
          for i in range(10):
              print threading.current_thread().name, i
              sleep(1)
          print threading.current_thread().name, done
      
      
      
      def main():
          print test start...
      , threading.current_thread().name threads = [] for i in range(10): t = threading.Thread(target=func, args=()) # 創建線程 threads.append(t) for i in range(10): print threads[i].name threads[i].start() # 啟動線程 for i in range(10): threads[i].join()                 # 等待線程結束
      print test done..., threading.current_thread().name if __name__==__main__: main()

      輸出示例(不看也罷):

      技術分享圖片
      test start... MainThread
      Thread-1
      Thread-2
       Thread-1 start
       Thread-2 Thread-1 Thread-3
      0
      startThread-3 Thread-4
      start
      Thread-3 0Thread-5
       
      
      Thread-4Thread-2  Thread-5 0Thread-6
      start
      
      start
      Thread-5
      Thread-4 0Thread-7 0 Thread-6 start Thread-6 0 Thread-7Thread-8 start Thread-7 0 Thread-8 startThread-9 Thread-8 0 Thread-9 start Thread-9 0 Thread-10 Thread-10 start Thread-10 0 Thread-3 Thread-2 1 1 Thread-7 Thread-1 11 Thread-8Thread-6 1 Thread-4 1 1 Thread-5 1Thread-9 1Thread-10 1 Thread-3 Thread-6 2Thread-7 Thread-4 Thread-2 2 2 2 2 Thread-1 2 Thread-8 2 Thread-9 2 Thread-5 2 Thread-10 2 Thread-6 3 Thread-2 3Thread-3Thread-4Thread-7 3 3 Thread-1 33Thread-5 3 Thread-8 3 Thread-10 3Thread-9 3 Thread-6 4 Thread-9 4Thread-5 4 Thread-2 4 Thread-3Thread-1 4Thread-7 4Thread-8 Thread-4 4 4 4Thread-10 4 Thread-1 5 Thread-5 5 Thread-4 5 Thread-7 Thread-3 Thread-105 Thread-8 Thread-2 555 Thread-6 55Thread-9 5 Thread-9 Thread-2 Thread-5 Thread-10 Thread-6Thread-1 6666 6 Thread-7Thread-3 6 Thread-8 6 Thread-4 666 Thread-10 7 Thread-6Thread-9 7Thread-1 7 7 Thread-3 Thread-8Thread-4 77 Thread-5 7 Thread-2 7 Thread-7 7 7 Thread-10 8 Thread-8 8 Thread-9Thread-2 88 Thread-1 8 Thread-5 8 Thread-7 8 Thread-3 8 Thread-4 8 Thread-6 8 Thread-10 9 Thread-5 9Thread-8 9 Thread-3Thread-7 9 Thread-9Thread-2 99 9 Thread-1 9 Thread-4 9 Thread-6 9 Thread-8 Thread-5 doneThread-10 donedone Thread-7 done Thread-9 done Thread-2 Thread-3 donedone Thread-1 done Thread-4 doneThread-6 done test done... MainThread
      輸出示例
    2. threading模塊中的函數使用示例
      # the function in the module threading
      import threading
      from time import sleep, ctime
      
      
      # active_count()   return the num of active thread
      # current_thread() return current thread object
      # enumerate()      return the list of active threads
      # settrace(func)   provide a func for all thread
      
      
      def func():
          print threading.current_thread().name, start
          print in, threading.current_thread().name,threading.enumerate()
          sleep(5)
          print threading.current_thread().name, done
      
      def main():
          print test start..., threading.current_thread().name
          threads = []
      
          print active threads num, threading.active_count()
          print active threads list, threading.enumerate()
      
          for i in range(10):
              t = threading.Thread(target=func, args=())
              threads.append(t)
              print creat thread, t.name
      
          print active threads num, threading.active_count()
          print active threads list, threading.enumerate()
      
          for i in range(10):
              threads[i].start()
              print threads[i].name, is started
              print active threads num, threading.active_count()
              print active threads list, threading.enumerate()
      
          print -----------------------
          print active threads num, threading.active_count()
          print active threads list, threading.enumerate()
      
          for i in range(10):
              threads[i].join()
      
      
          print -----------------------
          print active threads num, threading.active_count()
          print active threads list, threading.enumerate()
          print test done..., threading.current_thread().name
      
      if __name__==__main__:
          main()

      輸出示例(謹慎操作,文件很亂):

      技術分享圖片
      test start... MainThread
      active threads num 1
      active threads list [<_MainThread(MainThread, started 139754671793984)>]
      creat thread Thread-1
      creat thread Thread-2
      creat thread Thread-3
      creat thread Thread-4
      creat thread Thread-5
      creat thread Thread-6
      creat thread Thread-7
      creat thread Thread-8
      creat thread Thread-9
      creat thread Thread-10
      active threads num 1
      active threads list [<_MainThread(MainThread, started 139754671793984)>]
      Thread-1 Thread-1 is startedstart
      
      in Thread-1active threads num 2
      active threads list  [[<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>]
      <_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>]
      Thread-2 start
      in  Thread-2 Thread-2[<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-2, started 139754526975744)>]
       is started
      active threads num 3
      active threads list [<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-2, started 139754526975744)>]
      Thread-3 startThread-3 
      in Thread-3is started [
      <_MainThread(MainThread, started 139754671793984)>active threads num 4, <Thread(Thread-1, started 139754535368448)>
      , <Thread(Thread-3, started 139754518583040)>, active threads list [<Thread(Thread-2, started 139754526975744)>]
      <_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-2, started 139754526975744)>]
      Thread-4 startThread-4
      in  Thread-4is started [
      <_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-2, started 139754526975744)>, active threads num 5<Thread(Thread-4, started 139754510190336)>
      ]
      active threads list [<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-4, started 139754510190336)>]
      Thread-5 startThread-5
      in  Thread-5 [<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, is started<Thread(Thread-2, started 139754526975744)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      
      active threads num 6
      active threads list [<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      Thread-6 start
      in  Thread-6Thread-6 [ is started<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      
      active threads num 7
      active threads list [<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      Thread-7 startThread-7
      in Thread-7  [is started<_MainThread(MainThread, started 139754671793984)>, 
      <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-7, started 139754142168832)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>active threads num 8, <Thread(Thread-5, started 139754501797632)>]
      
      active threads list [<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-7, started 139754142168832)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      Thread-8 start
      in  Thread-8Thread-8 [ is started<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-8, started 139754133776128)>, 
      <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>active threads num 9, <Thread(Thread-7, started 139754142168832)>, 
      <Thread(Thread-4, started 139754510190336)>, active threads list [<Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      <_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-8, started 139754133776128)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-7, started 139754142168832)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      Thread-9 startThread-9
      in  Thread-9 [is started<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-8, started 139754133776128)>
      , <Thread(Thread-9, started 139754125383424)>active threads num 10, 
      <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-7, started 139754142168832)>, active threads list [<Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      <_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-8, started 139754133776128)>, <Thread(Thread-9, started 139754125383424)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-7, started 139754142168832)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      Thread-10 Thread-10 start
      in Thread-10is started [
      <_MainThread(MainThread, started 139754671793984)>active threads num 11, 
      <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-8, started 139754133776128)>active threads list , [<Thread(Thread-9, started 139754125383424)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-7, started 139754142168832)>, <Thread(Thread-10, started 139754116990720)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)><_MainThread(MainThread, started 139754671793984)>, , <Thread(Thread-5, started 139754501797632)>]
      <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-8, started 139754133776128)>, <Thread(Thread-9, started 139754125383424)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-7, started 139754142168832)>, <Thread(Thread-10, started 139754116990720)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      -----------------------
      active threads num 11
      active threads list [<_MainThread(MainThread, started 139754671793984)>, <Thread(Thread-1, started 139754535368448)>, <Thread(Thread-8, started 139754133776128)>, <Thread(Thread-9, started 139754125383424)>, <Thread(Thread-2, started 139754526975744)>, <Thread(Thread-6, started 139754493404928)>, <Thread(Thread-7, started 139754142168832)>, <Thread(Thread-10, started 139754116990720)>, <Thread(Thread-4, started 139754510190336)>, <Thread(Thread-3, started 139754518583040)>, <Thread(Thread-5, started 139754501797632)>]
      Thread-4 Thread-1 done
       Thread-7Thread-10 done
       Thread-5 doneThread-6
       Thread-2 Thread-9done
      done
       doneThread-3 Thread-8done 
       
      donedonedone
      
      
      -----------------------
      active threads num 1
      active threads list [<_MainThread(MainThread, started 139754671793984)>]
      test done... MainThread
      輸出示例

Python 學習筆記 多線程-threading