python的thread模塊作用


線程

python的thread模塊是比較底層的模塊,python的threading模塊是對thread做了一些包裝的,可以更加方便的被使用

1. 使用threading模塊

單線程執行

import threading
import time

def hello_for():
    print("你好 世界, 你好  中國")
    time.sleep(1)

if __name__ == "__main__":
    for i in range(5):
        t = threading.Thread(target=hello_for)
        t.start() #啟動線程,即讓線程開始執行

運行結果:

 

多線程執行

import threading
import time

def hello_for():
    print("你好 世界, 你好  中國")
    time.sleep(1)

if __name__ == "__main__":
    for i in range(5):
        t = threading.Thread(target=hello_for)
        t.start() #啟動線程,即讓線程開始執行

運行結果:

 

說明

  1. 可以明顯看出使用了多線程並發的操作,花費時間要短很多
  2. 當調用start()時,才會真正的創建線程,並且開始執行

2. 主線程會等待所有的子線程結束后才結束

import threading
from time import sleep,ctime

def sing():
    for i in range(3):
        print("正在唱歌...%d"%i)
        sleep(1)

def dance():
    for i in range(3):
        print("正在跳舞...%d"%i)
        sleep(1)

if __name__ == '__main__':
    print('---開始---:%s'%ctime())

    t1 = threading.Thread(target=sing)
    t2 = threading.Thread(target=dance)

    t1.start()
    t2.start()

    print('---結束---:%s'%ctime())

運行結果:

3. 查看線程數量

import threading
from time import sleep,ctime

def sing():
    for i in range(3):
        print("正在唱歌...%d"%i)
        sleep(1)

def dance():
    for i in range(3):
        print("正在跳舞...%d"%i)
        sleep(1)

if __name__ == '__main__':
    print('---開始---:%s'%ctime())

    t1 = threading.Thread(target=sing)
    t2 = threading.Thread(target=dance)

    t1.start()
    t2.start()

    while True:
        length = len(threading.enumerate())
        print('當前運行的線程數為:%d'%length)
        if length<=1:
            break

        sleep(0.5)

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM