2015-05-02 22 views
15

Python dauert 17 mal länger auf meinem Windows 7-Rechner als Ubuntu 14.04 auf einer VM (in Windows auf der gleichen Hardware) zu laden. Anaconda3 Distribution wird auf Windows und Ubuntu Standard Python3.4 verwendet.Python ist sehr langsam unter Windows 7

Von einer Bash-Eingabeaufforderung (Git Bash unter Windows):

$ time python3 -c "pass" 

kehrt in 0.614s auf Windows und 0.036s auf Linux

Wenn Pakete geladen wird die Situation noch schlimmer:

$ time python3 -c "import matplotlib" 

kehrt in 6.01s unter Windows und 0.189s unter Linux zurück

Spyde r dauert unter Windows 51 und dauert 1,5 Sekunden unter Linux.

Ich hatte kein Glück festzustellen, warum ich diese Leistungsprobleme habe. Hat jemand irgendwelche Ideen was ich als nächstes versuchen sollte?

edit:

Why is python so much slower on windows? wurde als mögliche doppelte aber meine Leistung unterschiedlich ist viel größer und nicht erklärt einfach durch andere Bibliothek Abhängigkeiten und Compiler vorgeschlagen. Dies scheint mir mit Dateisystemunterschieden zu tun zu haben.

Ich hatte Verdacht auf Antiviren-Zugriffsscans, aber deaktiviert das Antivirus nur für den Fall.

>>> sys.path 

['', 'c:\\Anaconda3\\python34.zip', 'c:\\Anaconda3\\DLLs', 'c:\\Anaconda3\\lib', 'c:\\Anaconda3', 'c:\\Anaconda3\\lib\\site-packages', 'c:\\Anaconda3\\lib\\site-packages\\Sphinx-1.2.3-py3.4.egg', 'c:\\Anaconda3\\lib\\site-packages\\cryptography-0.8-py3.4-win-amd64.egg', 'c:\\Anaconda3\\lib\\site-packages\\nose-1.3.4-py3.4.egg', 'c:\\Anaconda3\\lib\\site-packages\\win32', 'c:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'c:\\Anaconda3\\lib\\site-packages\\Pythonwin', 'c:\\Anaconda3\\lib\\site-packages\\setuptools-14.3-py3.4.egg'] 

Update:

Eine frische Installation von Windows 8.1 Pro auf dem gleichen PC das Problem gelöst. Nach der Neuinstallation aller Anwendungen und Anaconda3 ist Python die beste Leistung, die ich je gesehen habe. Leider ist die Ursache dieses Problems immer noch unbekannt.

Korrektur:

Nach meiner IT-Abteilung Sophos Safeguard Verschlüsselungssoftware und MS Endpoint Protection das Problem zurückgegeben installiert. Gleicher langsamer Start wie zuvor. Das Deaktivieren der zusätzlichen Software hat das Problem nicht gelöst, daher versuchen wir, Tests auf anderen Computern durchzuführen, um das Problem zu verfolgen.

+0

möglich Duplikat von [Warum ist Python so viel langsamer auf Windows?] (Http://StackOverflow.com/Questions/10150881/Why-is-Python-S-Much-Slower-On-Windows) –

+0

Ich bin nicht genauso besorgt über die Leistung der Python-Sprache, aber warum es so lange dauert, um es zu laden. Ich habe die Code-Ausführungsleistung auf beiden Plattformen nicht profiliert, habe aber nach dem Start des Interpreters keinen wesentlichen Unterschied gespürt. – Mike

+0

Wie groß ist Ihre% path% Variable? Wo ist Python drin? Viele Programme verketten sich einfach darin und verwandeln das Ganze allmählich in ein Durcheinander. Nun, ich wirklich denke nicht, dass für eine solche Verlangsamung erklären würde, aber beseitigen, dass als ein Verdächtiger nach wie vor sinnvoll sein kann. Eine Alternative besteht darin, den tatsächlichen Pfad zu python.exe anzugeben und festzustellen, ob dies einen Unterschied macht. Ich habe viel mit Python auf Windows gearbeitet (NT, XP und 7) und ich habe das nie gesehen. Ditto Blick auf Python sys.path, wenn es herauskommt, geht Ihr Modul laden Suche überall hin? –

Antwort

1

Das Problem durch die Deinstallation von Sophos Safeguard gelöst. Dies ist jedoch keine wirklich zufriedenstellende Lösung, da meine Firma diese Dateiverschlüsselungssoftware für Verzeichnisse verwendet, auf die ich täglich zugreife. Ich habe keine anderen Leistungsprobleme als Python (und anscheinend auch Ruby).

HINWEIS: Sophos SafeGuard ist nicht Antivirus-Software. Es ist ein Unternehmens Dateisystem Verschlüsselungssystem. Das Seltsame ist, dass die Verschlüsselung für lokale Dateisysteme explizit nicht aktiviert ist, beispielsweise wo Python installiert ist.

+0

Wenn Sie kein AV als Ersatz gewählt haben, empfehle ich AVG oder BitDefender. –

+0

Danke aber SafeGuard ist nicht AV, es ist Dateisystemverschlüsselung. – Mike

+0

Whoops. Sorry XD Ich sah Sophia und ich dachte AV –

0
  1. Vielleicht ein Beitrag zur Startvarianz könnte standardmäßig geladene Module sein. Sie können sys.modules verwenden, um Ihre zwei Umgebungen zu vergleichen.

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

Für mich ist die Antwort

$ 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 

Und Sie virtuelle ENVs verwenden können die Standard-geladenen Module zu manipulieren. https://virtualenv.pypa.io/en/latest/

  1. Git Bash für Windows scheint für mich mit Python falsch zu sein. Ich sehe das Versions-Banner nicht, wenn ich den Interpreter starte. Ich würde Startzeiten mit einer Eingabeaufforderung von cmd vergleichen. Oder sogar mit einem Python, der Python startet. Z.B.

-

import subprocess 
import time 
start = time.time() 
subprocess.check_call(["python", '-c ', 'pass']) 
print time.time() - start 
+0

Ich bekomme 0,047s für 'Zeit python -c" pass "' auf meinem Lenovo Y410p mit Win 10 aber 0,585s für das gleiche auf meiner Workstation mit Win 8. Die Modul-Zählungen für beide Maschinen sind die gleichen für Python 3. – Mike

1

Mai, um Ihren Fall nicht relevant sein, aber ich fand, dass in Windows mit Sophos Safeguard und McAfee Antivirus Python läuft Enteprise, dass die Zeiten Python Start eine Größenordnung langsamer waren, wenn Python als erhöhter Prozess ausgeführt wurde. Die Umstellung auf einen normalen Prozess hat für mich einen dramatischen Unterschied gemacht.

+0

Interessant, ich habe selten benötigt, um Python erhöht ausgeführt und war leicht zu sehen, eine Größenordnung der Verlangsamung mit Safeguard läuft als ein normaler Prozess. – Mike