zoukankan      html  css  js  c++  java
  • 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()就是解决这个问题的,不过由于应用不多,导致这方面资料非常少

    给个赞呗~

  • 相关阅读:
    Maven private reprository 更新
    Spark运行模式:cluster与client
    Spark脚本调用
    Java中hashCode与equal方法详解
    String值传递剖析
    Comparator 与 Comparable
    深入理解Java的接口和抽象类
    HitHub使用
    二叉树的递归与非递归遍历
    P1137 旅行计划
  • 原文地址:https://www.cnblogs.com/dongxixi/p/10823228.html
Copyright © 2011-2022 走看看