我有一个cherrypy应用程序,我用pyinstaller制作了一个exe。现在,当我运行 exe 时,它会将自身两次加载到内存中。观察任务管理器显示第一个实例加载到大约 1k,然后第二个 hte exe 实例加载到大约 3k ram。如果我关闭较大的一个,两个进程都会死。如果我关闭较小的一个,则只有一个死。
用子进程加载 exe,如果我尝试 proc.kill(),它只会杀死小的一个,而另一个在内存中运行。这是一起使用cherrypy和pyinstaller的副作用吗?
我有一个cherrypy应用程序,我用pyinstaller制作了一个exe。现在,当我运行 exe 时,它会将自身两次加载到内存中。观察任务管理器显示第一个实例加载到大约 1k,然后第二个 hte exe 实例加载到大约 3k ram。如果我关闭较大的一个,两个进程都会死。如果我关闭较小的一个,则只有一个死。
用子进程加载 exe,如果我尝试 proc.kill(),它只会杀死小的一个,而另一个在内存中运行。这是一起使用cherrypy和pyinstaller的副作用吗?
PyInstaller 在其启动过程中生成一个子进程。这在其手册的一部分中进行了解释。
了解您使用的 CherryPy 版本非常重要。2.x 行有一个不幸的设计:自动重载功能总是启动 CherryPy 的第二个实例,所以第一个实例可以在子进程被杀死时重生。这在版本 3 中已修复为仅使用一个进程。如果您使用的是版本 2,请通过配置条目关闭自动重新加载功能:
[global]
autoreload.on = False