python執行緒和程序

2022-08-23 01:48:16 字數 1028 閱讀 6184

執行緒:計算機能夠進行排程的最小單位

乙個程序可以包含多個執行緒,執行緒共享程序資源

多執行緒併發

上下文程序就像乙個工作的房間(記憶體)以及房間裡工作需要的資源(i/o啊,網絡卡啊),執行緒相當於工作的人

所有的在同乙個程序中的執行緒是共享一塊記憶體空間

pid(唯一的程序識別符號)

each process is started with a single thread,often called the primary thread, but can create  additional threads from any of its thread

程序是通過執行緒來執行的

乙個執行緒可以控制和操作同一程序裡的其他執行緒,但是程序只能操作子程序

對主線程的修改會影響到其他執行緒,修改乙個主程序不會影響到其子程序

程序擁有自己獨立的堆和棧,既不共享堆,亦不共享棧,程序由作業系統排程。

執行緒擁有自己獨立的棧和共享的堆,共享堆,不共享棧,執行緒亦由作業系統排程(標準執行緒是的)。

協程和執行緒一樣共享堆,不共享棧,協程由程式設計師在協程的**裡顯示排程。

程序和其他兩個的區別還是很明顯的。

協程和執行緒的區別是:協程避免了無意義的排程,由此可以提高效能,但也因此,程式設計師必須自己承擔排程的責任,同時,協程也失去了標準執行緒使用多cpu的能力。

打個比方吧,假設有乙個作業系統,是單核的,系統上沒有其他的程式需要執行,有兩個執行緒 a 和 b ,a 和 b 在單獨執行時都需要 10 秒來完成自己的任務,而且任務都是運算操作,a b 之間也沒有競爭和共享資料的問題。現在 a b 兩個執行緒並行,作業系統會不停的在 a b 兩個執行緒之間切換,達到一種偽並行的效果,假設切換的頻率是每秒一次,切換的成本是 0.1 秒(主要是棧切換),總共需要 20 + 19 * 0.1 = 21.9 秒。如果使用協程的方式,可以先執行協程 a ,a 結束的時候讓位給協程 b ,只發生一次切換,總時間是 20 + 1 * 0.1 = 20.1 秒。如果系統是雙核的,而且執行緒是標準執行緒,那麼 a b 兩個執行緒就可以真並行,總時間只需要 10 秒,而協程的方案仍然需要 20.1 秒。

Python 執行緒和程序

一 什麼是執行緒 1 執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。每個程序至少包含乙個執行緒.二 什麼是程序 1 乙個程序就是乙個程式的例項,每個程序裡面...

python程序和執行緒

爬蟲開發過程中 程序和執行緒的概念是非常重要的 提高爬蟲的 工作效率 打造分布式爬蟲 都離不開程序和執行緒的身影 多程序 多執行緒 協程 分布式程序等四個方面 使用os模組中的fork方法 使用multiprocessing模組 前者僅僅適用unix linux作業系統 對windows不支援 後者...

Python 高階 程序和執行緒

一 編碼規範 1 編排 1 縮排四個空格,空格與tab不能混用 2 行長80,防止單行邏輯複雜 2 import 1 不能用 from import 2 順序 標準庫 第三方庫 自定義庫 3 單行不要import多個庫 4 模組內用不到的不要去import 3 空格 1 標點符號後面跟乙個空格,前面...