首先給出偽代碼
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()就是解決這個問題的,不過由於應用不多,導致這方面資料非常少
給個贊唄~