進程和線程
首先還是基本概念的解釋犬辰,基本概念不清晰的話浑吟,可能沒辦法很好的理解這個問題恳啥。
上學的時候教科書上最經(jīng)典的一句話是“進程是資源分配的最小單位仔沿,線程是CPU調(diào)度的最小單位”。
其實就是這樣寸癌,一句話就把問題說清楚了专筷,但是又好像什么都沒說。
進程是向計算機申請資源的最小單位蒸苇,在我們使用計算機的時候磷蛹,看視頻是一個進程,寫文檔是?一個進程溪烤,看簡書也是一個進程味咳,在寫文檔這個進程中,你可以同時寫一個Excel和一個 Word檬嘀,他們是就可以看作是兩個不同的線程槽驶,共享寫文檔進程中的資源。
其實還可以這么說鸳兽,進程是最小的資源單位掂铐,線程是最小的操作單位。
也就說揍异,資源的分配最終會落實在進程上全陨,而操作的分配最終落實在線程上。
因為線程使用的是進程中資源衷掷,是進程中的實際運作單位辱姨。一個線程是進程中一個單一順序的指令串,或者說是一段代碼更容易理解戚嗅。在一個進程中可以同時有多個線程雨涛,每條線程可以執(zhí)行不同的任務枢舶。其實說是同時,但是并不是替久,只是CPU很快凉泄,看起來像是同時執(zhí)行而已。每個線程在執(zhí)行過程中會將一些信息記錄在“執(zhí)行上下文”中蚯根,也就是Execution Context中旧困。這里倒是有一個還不錯的例子,中學的時候還沒有電子書稼锅,都是在看紙質(zhì)的小說吼具,有一年《壞蛋是怎樣煉成的》很流行,但是只有一本書矩距,只能輪流看拗盒,每個人看完之后要記住自己看到了第幾頁以便下次拿到書的時候可以接著讀。這個時候書就可以看作是一個進程锥债,這幾個讀書的同學就可以看做是幾個線程陡蝇。這樣就是以幾個同學之間共享的方式完成了這本小說的閱讀,如果他們讀的夠快哮肚,或者將時間快進到一定程度登夫,就可以看做是這幾個同學同時在讀這本小說。
其實簡單來說允趟,就是多個操作主體對一個資源進行操作的情境恼策。這次拋開枯燥的概念,進行干貨的吸收潮剪。
Python3中多線程的模塊有_thread和threading涣楷。
推薦使用threading。
_thread 提供了低級別的抗碰、原始的線程以及一個簡單的鎖狮斗,threading 模塊包含了 _thread 模塊中的所有方法。
創(chuàng)建線程
Python?中創(chuàng)建線程只要繼承Thread即可弧蝇,然后重寫__init__方法和run方法:
然后調(diào)用start()就可以啟動線程碳褒,線程啟動會執(zhí)行run()方法。
我們模擬一下多線程中的經(jīng)典場景看疗,賣票沙峻。
關注「Python舊巷」,和小編一起學習Python吧