python在windows和linux環境的進程對比


1.fork進程:
(1)在windows系統中不可以用fork來創建進程,linux可以,但是創建大量進程使用很不方便。

2.Process進程:

 

 1 import multiprocessing as ms  2 import time  3 import os  4 
 5 
 6 class MyProcess(ms.Process):  7     def run(self):  8         print("這是進程!", os.getpid())  9 
10     def __del__(self): 11         print("刪除成功!") 12 
13 
14 def main(): 15     p1 = MyProcess() 16     p2 = MyProcess() 17  p1.start() 18     time.sleep(1) 19  p2.start() 20     time.sleep(1) 21     p2.join()  #等待進程結束
22     # print(ms.active_children())
23     # while True:
24     # time.sleep(0.01)
25 
26 if __name__ == "__main__": 27     main()

 

windows系統下結果:

linux系統下結果:

說明:

(1)如上代碼,當重寫Process的run方法創建進程后,可以看到windows系統會在子進程執行完畢后立即刪除Process對象,

但是linux系統並沒有刪除;同時在主進程結束后,windows系統會將主進程的Process對象刪除,也就是會出現兩次“刪除成功”,

但是linux系統中只有一次“刪除成功”的輸出,也就是說只顯示了一次。

(2)if __name__ == '__main__':
在windows環境下創建進程及相關的可執行代碼必須放在if __name__ == '__main__':下,否則會報錯;但是linux系統沒有這個問題。
3.Pool進程:
(1)Pool進程也一樣,在windows環境下相關的可執行代碼必須放置在if __name__ == '__main__'下。

三種進程的進程回收分析:python的multiprocessing模塊進程創建、資源回收-Process,Pool

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM