python程序開子進程打包成exe文件運行炸內存原因剖析


首先給出偽代碼

1 from multiprocessing import Process
2 
3 def task():
4     print("hahaha")
5     pass
6 
7 if __name__ == '__main__':
8     p = Process(target=task)
9     p.start()

pycharm運行結果:

 

 

打包成exe后運行:

 

 

 

打開exe文件沒有任何打印信息,再看任務管理器

 

下一張圖

 

 

內存占用飆升,第一時間意識到,程序在循環開啟子進程,而且並沒有進入子進程執行,這令我百思不得其解,十分困擾。

畢竟python不是主流做可執行軟件,網絡資料十分有限,后來在某論壇找到一篇沒說清楚問題的博客,不過好在實踐能力強,get到了一條關鍵語句

關鍵代碼:multiprocessing.freeze_support()

以上這句代碼加在 if __name__ == '__main__':   的下一行,記得在文件開頭import multiprocessing一下,問題完美解決

 

分析:開啟子進程是不支持打包exe文件的,所以會不停向操作系統申請創建子進程,導致內存炸了,multiprocessing.freeze_support()就是解決這個問題的,不過由於應用不多,導致這方面資料非常少

 

給個贊唄~

 


免責聲明!

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



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