python中的進程詳解

什麼是進程

定義:程序在計算機中的一次運行過程

程序:是一個可執行文件,是靜態的佔用磁盤空間,不佔用計算機的運行資源

進程:是一個動態過程的描述,佔用計算機的資源,有一定的生命週期

注意:同一個程序的不同運行過程是不同的進程,佔用資源和生命週期不一樣

進程的特徵

1.進程之間的運行互不影響,獨立運行
2.進程是操作系統分配資源的最小單位
3.每個進程獨立,各自佔用一定的虛擬內存

進程創建的流程

1.用戶啓動一個程序或者調用一個接口,發起創建進程
2.操作系統接收用戶的請求,開始創建進程
3.操作系統確定進程的狀態,爲進程分配資源和空間
4.操作系統將創建好的進程分配給程序

multiprocessing 模塊創建進程

使用multiprocessing中的Process類創建進程:
p = Process(target, args, kwargs, ')
其中參數,target爲子進程的方法名,arg爲給target函數按照位置傳參,kwargs爲給target函數按照字典傳參。簡單例子如下:

from multiprocessing import Process
from time import sleep

def worker(sec, name):
    for i in range(3):
        sleep(sec)
        print("I'm %s" % name)
        print("I'm working")

if __name__ == '__main__':
    p = Process(target=worker, args=(2,), kwargs={"name": "lee"}, name='Worker')
    p.start()
    print("process name:", p.name) #進程名稱,自己可以改
    print("process PID:", p.pid)	#進程id
    print("process is alive:", p.is_alive())	#進程狀態
    p.join(3)

運行結果

process name: Worker
process PID: 10956
process is alive: True
I'm lee
I'm working
I'm lee
I'm working
I'm lee
I'm working
##其中worker方法爲子進程,if條件語句下爲父進程。
##其中子進程並不單單只是執行worker方法中的代碼,而是將if語句之前的代碼全部運行。父進程執行的是除worker方法外的所有代碼。

孤兒進程和殭屍進程

孤兒進程:

        定義:父進程先於子進程退出,此時子進程就成爲孤兒進程

        *孤兒進程會被操作系統指定的進程收養,系統進程就成爲孤兒進程的新的父進程

 殭屍進程:

        定義:子進程先於父進程退出,但是父進程沒有處理子進程的退出狀態,此時子進程就會成爲殭屍進程

        *殭屍進程會存留少量PCB信息在內存中,大量的殭屍進程會消耗系統資源,應該避免殭屍進程的產生
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章