是什麼? 能幹什麼?
單執行緒情況下,執行效率低。系統的資源沒有得到充分利用。
計算密集型(運算量比較大)、io密集型(cpu空閒,輸入輸出較多)
怎麼幹?
爬蟲:(io密集型)
多執行緒:
橫向:所有的程式的執行都在乙個執行緒中,程式啟動時,啟動多執行緒,每個執行緒跑同樣的**。
縱向:將程式進行拆分,每個執行緒跑特定的程式,實現一部分功能。
怎麼編寫多執行緒:
建立子執行緒:t = threading.tread(target=函式名)
設定守護執行緒: t.setdaemon(true) # 次要的執行緒,從屬於主線程的執行緒,主線程結束,守護執行緒跟著結束
啟動執行緒: t.start()
queue:先進先出。
put(): 放乙個任務進入佇列,任務佇列的計數器會加1
get(): 從佇列中獲取乙個任務
task_done(): 標記這個任務已經完成,任務佇列的計數器會減1
join(): 阻塞程序,程式等待佇列的任務計數器為0.
為啥要引入執行緒池?
建立執行緒和**執行緒的資源需要花費時間,如果碰到頻繁的建立和銷毀執行緒,可以考慮使用執行緒池。
是什麼?乙個儲存了已經建立好執行緒的池子,使用執行緒執行程式不需要再重新建立執行緒、銷毀執行緒,而是直接從池中取出執行緒物件進行使用,用完再還回去的一種解決方案。
怎麼用?
建立執行緒池:
from multiprocessing.dummy.pool import pool
p = pool(5)
新增任務:
多執行緒 多程序?
這幾天在思考如何改進原型在多個客戶端的情況下的效能,特地溫習了一下多程序和多執行緒的一些知識。在linux下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...
多程序,多執行緒
多工程式設計 通過應用程式利用多個計算機核心達到多工同時執行的 目的,從此來提公升程式執行效率 多程序,多執行緒 程序 程式在計算機中一次執行的過程 程式 靜態的描述,不占有計算機資源 程序 是乙個動態的過程,占有cpu,記憶體等計算機資源 有一定的生命週期 同乙個程式,每次執行都是不同的程序,因為...
多執行緒 多程序
執行緒同步 lock rlock semaphores condition concurrent執行緒池編碼 多程序程式設計 multiprocessing 程序間通訊 gil global interpreter lock 全域性直譯器鎖 python中的乙個執行緒對應於c語言中的乙個執行緒 gi...