pyinstaller:我的cherrypy应用程序exe的2个实例被执行
我有一个用 pyinstaller 制作的 exe 的 Cherrypy 应用程序。 现在,当我运行 exe 时,它会将自身加载两次到内存中。观察任务管理器显示第一个实例加载到大约 1k 内存中,然后一秒钟后,hte exe 的第二个实例加载到大约 3k 内存中。如果我关闭较大的一个,两个进程都会死亡。如果我关闭较小的一只,那么只有那一只会死。
使用子进程加载 exe,如果我尝试 proc.kill(),它只会杀死小进程,而使另一个进程在内存中运行。这是一起使用cherrypy和pyinstaller的副作用吗?
I have a cherrypy app that I've made an exe with pyinstaller.
now when I run the exe it loads itself twice into memory. Watching the taskmanager shows the first instance load into about 1k, then a second later a second instance of hte exe loads into about 3k ram. If I close the bigger one both processes die. If I close hte smaller one only that one dies.
Loading the exe with subprocess, if I try to proc.kill(), it only kills the small one leaving the other running in memory. Is this a sideeffect of using cherrypy and pyinstaller together?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
PyInstaller 在启动过程中生成一个子进程。 其手册的一部分。
PyInstaller spawns a subprocess during its boot process. This is explained in a section of its manual.
了解您使用的 CherryPy 版本非常重要。 2.x 系列有一个不幸的设计:自动重新加载功能总是启动 CherryPy 的第二个实例,因此第一个实例可以在子进程被杀死时重生。这一问题在版本 3 中得到修复,只使用一个进程。如果您使用的是版本 2,请通过配置条目关闭自动重新加载功能:
It would be important to know what version of CherryPy you are using. The 2.x line had an unfortunate design: the autoreloader feature always started a second instance of CherryPy, so the first could respawn the child when it was killed off. That was fixed in version 3 to only use one process. If you are using version 2, turn off the autoreload feature via the config entry: