2010-01-23 23 views
6

J'ai une application cherrypy que j'ai fait un exe avec pyinstaller. maintenant quand je cours l'exe il se charge deux fois en mémoire. Regarder le gestionnaire de tâches montre la charge de la première instance dans environ 1k, puis une seconde plus tard, une seconde instance de hte charge dans environ 3k RAM. Si je ferme le plus grand, les deux processus meurent. Si je ferme le plus petit seulement celui-là meurt.pyinstaller: 2 instances de mon application cherrypy exe sont exécutées

Chargement de l'exe avec un sous-processus, si j'essaie de proc.kill(), il ne tue que le petit en laissant l'autre en mémoire. Est-ce un effet secondaire d'utiliser cherrypy et pyinstaller ensemble?

Répondre

1

Il serait important de savoir quelle version de CherryPy vous utilisez. La ligne 2.x avait un design malheureux: la fonction autoreloader commençait toujours une seconde instance de CherryPy, de sorte que la première pouvait réapparaître l'enfant quand elle était supprimée. Cela a été corrigé dans la version 3 pour n'utiliser qu'un seul processus. Si vous utilisez la version 2, désactivez la fonction autoreload via l'entrée de configuration:

[global] 
autoreload.on = False 
3

PyInstaller génère un sous-processus au cours de son processus de démarrage. Ceci est expliqué dans a section of its manual.

+0

Bonjour Giovanni, c'est toujours un plaisir de vous parler. J'ai besoin de votre soutien et de votre expérience concernant cette question: http://stackoverflow.com/questions/14997414/obfuscating-python-bytecode-through-interpreter-mutation/14997695 - Merci :) – securecurve