程序和執行緒
我們開啟我們的計算機就會看到程序和執行緒
那什麼是程序什麼是執行緒
我的理解是程序是指在系統中正在執行的乙個應用程式;程式一旦執行就是程序,或者更專業化來說:程序是指程式執行時的乙個例項。
執行緒是程序的乙個實體。
程序——資源分配的最小單位,執行緒——程式執行的最小單位。
我舉個例子,比如開啟qq,就是乙個執行緒,有很多個qq上號就是程序
python執行緒和程序的使用
現在講python執行緒和程序的使用
在python中線程和程序的使用就是通過thread這個類。這個類在我們的_thread和threading模組中。
我們看乙個標準的多執行緒的例子。
練習下面我們來練習下, 加深hreading模組的使用。
我寫了下面的**
我們先不加join()來阻塞,t1和t2兩個執行緒同時執行,由於位置先列印hello,再列印hi,這個時候都sleep2秒鐘,但是他sleep2秒鐘,主程式還是在執行,所以下面列印print('主線程完畢'),最後才列印bye和out
執行緒間變數的共享
**如上圖所示,列印的a是1還是2,
答案是 :2。因為出現了global,執行緒間變數的共享,在func中的a是全域性變數。
下面,我們提高一點點難度,**如下圖所示,還是猜一猜a是啥東西。注意:這裡出現了join來阻塞來增加了加和減的操作。
相信很多人都認為是0,其實這個a的值是變化的,可能這次是0 ,下次是1,還有可能是1000000,a就是在[-1000000,1000000]中的乙個隨機數。
為什麼呢?這是因為雖然他們是同時執行的,但是同時在修改我們的a,那就亂了。這是導致a,for i in range(1000000),就是遍歷了1000000,incr和decr的方法都加上一起了,在這1000000次遍歷中,不知道有多少加,多少減,比如,我1000000都是加,沒有減,a就是1000000。
如果你就是想出現0,其實加乙個互斥鎖就可以了。這樣你加多少次,我就減多少次,加減的次數不會疊加。因此來了lock的用法。
這個a怎麼執行都是 0。因為我們把這個a鎖上了,這樣就加1000000次,減1000000次,怎麼出來都是我們的0。
Python 執行緒和程序
一 什麼是執行緒 1 執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。每個程序至少包含乙個執行緒.二 什麼是程序 1 乙個程序就是乙個程式的例項,每個程序裡面...
python執行緒和程序
執行緒 計算機能夠進行排程的最小單位 乙個程序可以包含多個執行緒,執行緒共享程序資源 多執行緒併發 上下文程序就像乙個工作的房間 記憶體 以及房間裡工作需要的資源 i o啊,網絡卡啊 執行緒相當於工作的人 所有的在同乙個程序中的執行緒是共享一塊記憶體空間 pid 唯一的程序識別符號 each pro...
python程序和執行緒
爬蟲開發過程中 程序和執行緒的概念是非常重要的 提高爬蟲的 工作效率 打造分布式爬蟲 都離不開程序和執行緒的身影 多程序 多執行緒 協程 分布式程序等四個方面 使用os模組中的fork方法 使用multiprocessing模組 前者僅僅適用unix linux作業系統 對windows不支援 後者...