马士兵python_马士兵python大数据全栈工程师
3. 進程與線程的關(guān)系
一個程序就是一個進程,而一個程序中的多個任務(wù)則被稱為線程。進程是表示資源分配的基本單位,又是調(diào)度運行的基本單位。,亦即執(zhí)行處理機調(diào)度的基本單位。 進程和線程的關(guān)系:一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程。線程是操作系統(tǒng)可識別的最小執(zhí)行和調(diào)度單位。
資源分配給進程,同一進程的所有線程共享該進程的所有資源。同一進程中的多個線程共享代碼段(代碼和常量),數(shù)據(jù)段(全局變量和靜態(tài)變量),擴展段(堆存儲)。但是每個線程擁有自己的棧段,棧段又叫運行時段,用來存放所有局部變量和臨時變量,即每個線程都有自己的堆棧和局部變量。
處理機分給線程,即真正在處理機上運行的是線程。
線程在執(zhí)行過程中,需要協(xié)作同步。不同進程的線程間要利用消息通信的辦法實現(xiàn)同步。
如果把上課的過程比作進程,把老師比作CPU,那么可以把每個學(xué)生比作每個線程,所有學(xué)生共享這個教室(也就是所有線程共享進程的資源),上課時學(xué)生A向老師提出問題,老師對A進行解答,此時可能會有學(xué)生B對老師的解答不懂會提出B的疑問(注意:此時可能老師還沒有對A同學(xué)的問題解答完畢),此時老師又向?qū)W生B解惑,解釋完之后又繼續(xù)回答學(xué)生A的問題,同一時刻老師只能向一個學(xué)生回答問題(即:當多個線程在運行時,同一個CPU在某一個時刻只能服務(wù)于一個線程,可能一個線程分配一點時間,時間到了就輪到其它線程執(zhí)行了,這樣多個線程在來回的切換)
4. 為什么要使用多線程
多線程可以提高程序的效率。
實際生活案例:村長要求喜洋洋在一個小時內(nèi)打100桶水,可以喜洋洋一個小時只能打25桶水,如果這樣就需要4個小時才能完成任務(wù),為了在一個小時能夠完成,喜洋洋就請美洋洋、懶洋洋、沸洋洋,來幫忙,這樣4只羊同時干活,在一小時內(nèi)完成了任務(wù)。原本用4個小時完成的任務(wù)現(xiàn)在只需要1個小時就完成了,如果把每只羊看做一個線程,多只羊即多線程可以提高程序的效率。
總結(jié)
以上是生活随笔為你收集整理的马士兵python_马士兵python大数据全栈工程师的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记录FPGA面试的准备
- 下一篇: python 学生成绩表,生成数据表并且