好程序員Python培訓(xùn)分享Python中進(jìn)程和線程詳解:Num01–>線程 線程是操作系統(tǒng)中能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。 一個(gè)線程指的是進(jìn)程中一個(gè)單一順序的控制流。 一個(gè)進(jìn)程中可以并發(fā)多條線程,每條線程并行執(zhí)行不同的任務(wù)。 Num02–>進(jìn)程 進(jìn)程就是一個(gè)程序在一個(gè)數(shù)據(jù)集上的一次動(dòng)態(tài)執(zhí)行過程。 進(jìn)程有以下三部分組成: 1,程序:我們編寫的程序用來描述進(jìn)程要完成哪些功能以及如何完成。 2,數(shù)據(jù)集:數(shù)據(jù)集則是程序在執(zhí)行過程中需要的資源,比如圖片、音視頻、文件等。 3,進(jìn)程控制塊:進(jìn)程控制塊是用來記錄進(jìn)程的外部特征,描述進(jìn)程的執(zhí)行變化過程,系統(tǒng)可以用它來控制和管理進(jìn)程,它是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)記。 Num03–>進(jìn)程和線程的區(qū)別: 1、運(yùn)行方式不同 進(jìn)程不能單獨(dú)執(zhí)行,它只是資源的集合。 進(jìn)程要操作CPU,必須要先創(chuàng)建一個(gè)線程。 所有在同一個(gè)進(jìn)程里的線程,是同享同一塊進(jìn)程所占的內(nèi)存空間。 2、關(guān)系 進(jìn)程中第一個(gè)線程是主線程,主線程可以創(chuàng)建其他線程;其他線程也可以創(chuàng)建線程;線程之間是平等的。 進(jìn)程有父進(jìn)程和子進(jìn)程,獨(dú)立的內(nèi)存空間,唯一的標(biāo)識(shí)符:pid。 3、速度 啟動(dòng)線程比啟動(dòng)進(jìn)程快。 運(yùn)行線程和運(yùn)行進(jìn)程速度上是一樣的,沒有可比性。 線程共享內(nèi)存空間,進(jìn)程的內(nèi)存是獨(dú)立的。 4、創(chuàng)建 父進(jìn)程生成子進(jìn)程,相當(dāng)于復(fù)制一份內(nèi)存空間,進(jìn)程之間不能直接訪問 創(chuàng)建新線程很簡(jiǎn)單,創(chuàng)建新進(jìn)程需要對(duì)父進(jìn)程進(jìn)行一次復(fù)制。 一個(gè)線程可以控制和操作同級(jí)線程里的其他線程,但是進(jìn)程只能操作子進(jìn)程。 5、交互 同一個(gè)進(jìn)程里的線程之間可以直接訪問。兩個(gè)進(jìn)程想通信必須通過一個(gè)中間代理來實(shí)現(xiàn)。 Python作為人工智能時(shí)代最好的代言語言,在其發(fā)展中占有重要的地位 |
|