Python est très lent à démarrer sur Windows 7

Python prend 17 fois plus de temps à charger sur ma machine Windows 7 qu'Ubuntu 14.04 tournant sur une VM (Windows intérieur sur le même matériel). La distribution Anaconda3 est utilisée sur Windows et Ubuntu par défaut python3.4.

à Partir d'une invite de Bash (Git bash sous Windows):

$ time python3 -c "pass"

retourne en 0.614 s sous Windows et 0.036 s sous Linux

quand les paquets sont chargés, la situation empire:

$ time python3 -c "import matplotlib"

retourne en 6.01 s sur Windows et 0.189 s sur Linux

Spyder prend une énorme 51s pour charger sur Windows et 1.5 s sur Linux.

je n'ai pas eu de chance, de déterminer pourquoi j'ai ce problèmes de performance. Quelqu'un a une idée de ce que je devrais essayer?

edit:

pourquoi python est-il si lent sur windows? a été suggéré comme un duplicata possible mais mes performances différentes sont beaucoup plus grandes et ne sont pas expliquées simplement par des dépendances de bibliothèque et des compilateurs différents. Ce il me semble être lié aux différences du système de fichiers.

j'avais suspecté l'antivirus sur les scanners d'accès mais j'ai désactivé l'antivirus juste au cas où.

>>> sys.path

['', 'c:Anaconda3python34.zip', 'c:Anaconda3DLLs', 'c:Anaconda3lib', 'c:Anaconda3', 'c:Anaconda3libsite-packages', 'c:Anaconda3libsite-packagesSphinx-1.2.3-py3.4.egg', 'c:Anaconda3libsite-packagescryptography-0.8-py3.4-win-amd64.egg', 'c:Anaconda3libsite-packagesnose-1.3.4-py3.4.egg', 'c:Anaconda3libsite-packageswin32', 'c:Anaconda3libsite-packageswin32lib', 'c:Anaconda3libsite-packagesPythonwin', 'c:Anaconda3libsite-packagessetuptools-14.3-py3.4.egg']

mise à Jour:

une nouvelle installation de Windows 8.1 Pro sur le même PC a résolu le problème. Après avoir réinstallé toutes les applications et anaconda3 Python performance est le meilleur que j'ai vu. Malheureusement, la cause de ce problème est encore inconnue.

Correction:

après mon département informatique Sophos a installé le logiciel de cryptage de sauvegarde et la protection MS Endpoint le problème est revenu. Même le démarrage lent qu'avant. La désactivation du logiciel supplémentaire n'a pas résolu le problème, donc nous essayons des tests sur d'autres machines pour retracer le problème.

16
demandé sur Community 2015-05-02 04:10:38

3 réponses

le problème est résolu en désinstallant Sophos SafeGuard. Ce n'est pas vraiment une solution satisfaisante bien que puisque mon entreprise utilise ce logiciel de cryptage du système de fichiers sur les répertoires auxquels j'accède quotidiennement. Je ne semble pas avoir d'autres problèmes de performance sauf avec Python (et apparemment Ruby aussi).

NOTE: la sauvegarde Sophos est logiciel antivirus. C'est un système de cryptage de système de fichiers d'entreprise. La chose étrange est que le chiffrement est pas explicitement activé pour les systèmes de fichiers locaux, comme Où Python est installé.

1
répondu Mike 2015-10-06 21:03:56

N'est peut-être pas pertinent pour votre cas, mais j'ai trouvé que l'exécution de python dans Windows avec Sophos Safeguard et McAfee Enteprise Antivirus que les temps de démarrage de python étaient d'un ordre de grandeur plus lent si python était exécuté comme un processus élevé. Le fait de le faire fonctionner comme un processus normal a fait une différence considérable pour moi.

1
répondu ivanatpr 2015-12-08 20:03:53
  1. peut-être un contributeur à la variance de démarrage pourrait être des modules chargés par défaut. Vous pouvez utiliser sys.modules pour comparer les deux environnements.

python -c "import sys;print(len(sys.modules))"

Pour moi, la réponse est

$ time py -2 -c "pass"

real    0m0.054s
user    0m0.000s
sys     0m0.000s

$ py -2 -c "import sys;print(len(sys.modules))"
44

$ time py -3 -c "pass"

real    0m0.063s
user    0m0.000s
sys     0m0.000s

$ py -3 -c "import sys;print(len(sys.modules))"
54

et vous pouvez utiliser virtual envs pour manipuler les modules chargés par défaut. https://virtualenv.pypa.io/en/latest/

  1. Git bash pour windows semble pas fonctionner pour moi avec python. Je ne vois pas la bannière de version quand je lancerai l'interprète. Je comparerais les heures de début avec une invite cmd. Ou même avec un python qui lance python. E. g.

-

import subprocess
import time
start = time.time()
subprocess.check_call(["python", '-c ', 'pass'])
print time.time() - start
0
répondu ubershmekel 2015-08-30 07:11:45