python入門教程12-06 (python語法入門之進程間數據隔離)

進程與進程之間的數據是隔離的,內存空間是不能共享的因此要想進行通訊,必須藉助其餘手段,那麼如何去運用呢,下面咱們就來看看吧!安全

進程隔離是爲保護操做系統中進程互不干擾而設計的一組不一樣硬件和軟件的技術ide

這個技術是爲了不進程A寫入進程B的狀況發生。 進程的隔離實現,使用了虛擬地址空間。進程A的虛擬地址和進程B的虛擬地址不一樣,這樣就防止進程A將數據信息寫入進程B操作系統

進程隔離的安全性經過禁止進程間內存的訪問能夠方便實現設計

代碼驗證code

from multiprocessing import Process進程

n=100 defwork(): global n ip

n=0    print('子進程內: ',n)if __name__ == '__main__':

p=Process(target=work)

p.start()

print('主進程內: ',n)

守護進程內存

會隨着主進程的結束而結束,通俗點的說相似於古代的君王和服侍君王的太監,妃子等一干人,只要君王死了其餘人都得陪葬一塊兒翹辮子~get

主進程建立守護進程it

  其一:守護進程會在主進程代碼執行結束後就終止

  其二:守護進程內沒法再開啓子進程,不然拋出異常:AssertionError: daemonic processes are not allowed to have children

注意:進程之間是互相獨立的,主進程代碼運行結束,守護進程隨即終止

import osimport timefrom multiprocessing import ProcessclassMyprocess(Process): definit(self,person): super().init()

self.person = person

defrun(self):        print(os.getpid(),self.name)

    print('%s正在和女主播聊天' %self.person)

p=Myprocess('炮王')

p.daemon=True # 必定要在p.start()前設置,設置p爲守護進程,禁止p建立子進程,而且父進程代碼執行結束,p即終止運行p.start()

time.sleep(10) # 在sleep時查看進程id對應的進程ps -ef|grep idprint('主')

迷惑人的小例子

from multiprocessing import Processdeffoo(): print(123)

time.sleep(1)

print("end123")defbar():    print(456)

time.sleep(3)

print("end456")

p1=Process(target=foo)

p2=Process(target=bar)

p1.daemon=Truep1.start()

p2.start()

time.sleep(0.1)

print("main-------")#打印該行則主進程代碼結束,則守護進程p1應該被終止.#可能會有p1任務執行的打印信息123,由於主進程打印main----時,p1也執行了,可是隨即被終止.

相關文章
相關標籤/搜索