Python簡單的多線程demo:常用寫法


簡單多線程實現:啟動50個線程,並計算執行時間。

import threading
import time

def run(n):
    time.sleep(3)
    print("task:",n)

# 使用單線程,執行完需要6s
# t1.run()
# t2.run()

# 使用多線程,執行完需要3s,怎么確定是3s呢?在前后加時間相減能否算出來?
# t1 = threading.Thread(target=run, args=("t1",))
# t2 = threading.Thread(target=run, args=("t2",))
# t1.start()
# t2.start()

# 快速執行多線程,啟動線程不能太多,上下文切換會導致速度變慢
# 怎樣算所有線程執行完的時間呢??直接在主線程里加時間相減是計算不出來的。因為~
# 主線程創建線程之后直接往下走了,不會等子線程執行完畢
# 一個程序至少有一個線程(主線程),主線程和子線程是並行的
# 主線程啟動子線程之后子線程就獨立了
# so,直接在主線程里加測不出來時間,那么可以在主線程里等待子線程的執行結果
# 加t.join(),作用是等待t線程的執行結果,不出結果不往下走,
# 可以試試,如果在每個線程的啟動語句后面加t.join(),那么加了之后程序就變成串行的了,達不到效果
# 如果這樣呢?t1.start()  t2.start()  t1.join() 假設t1線程需要2秒,t2線程需要4秒那么t1先結束主線程就打印時間了
# 就需要 t1.start() t2.start() t1.join() t2.join() 按這個順序執行才行。so我們啟動50個線程,計算執行時間:
# 雖然啟動了50個線程,但是有51個線程在執行,包括主線程,通過“threading.current_thread()”查看當前線程的名稱
# 通過方法“threading.active_count()”查看當前活動線程的個數
start_time = time.time() t_objs = [] for i in range(50): t = threading.Thread(target=run, args=("t-{0}".format(i),)) t.start() t_objs.append(t) for t in t_objs: t.join() print("cost:", time.time()-start_time)

 


免責聲明!

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



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