it-swarm.com.de

IPython-Konsole in spyder in Anaconda extrem langsam

Ich versuche Anaconda/Spyder, nachdem ich einige Jahre die standardmäßige Python-Installation/IDLE verwendet habe. Die Konsole (und der Variablen-Explorer) werden bei jeder Arbeitssitzung mit jedem Skript und jedem interaktiven Befehl, den ich ausführen, immer langsamer. Schließlich dauert es einige Minuten, bis eine Antwort auf einfache Befehle wie print angezeigt wird. Dann reagiert es nicht mehr vollständig und ich habe es heruntergefahren. Es ist ziemlich störend für meine Arbeit. 

Mac OSX 10.13.6

conda version : 4.5.11
conda-build version : 3.15.1
python version : 3.7.0.final.0

qt 5.9.6
spyder 3.3.1 
ipython 7.1.1

Ich verwende Matplotlib häufig. Wann immer es möglich ist, verwende ich plt.ioff () am Anfang eines Skripts und/oder plt.close ('all') am Ende. Das vollständige Deaktivieren der Matplotlib-Unterstützung in den Voreinstellungen hilft nicht und ist sowieso keine dauerhafte Lösung. Python verwendet nicht in der Nähe meiner gesamten CPU oder meines Arbeitsspeichers.

3

Dies ist also keine völlig befriedigende Lösung, scheint jedoch eine sinnvolle temporäre Lösung zu sein. Wenn Sie Ihre Spyder-Version auf 3.1.X herabstufen, können Sie die Python-Konsole anstelle der Ipython-Konsole verwenden. Dies scheint für mich zu funktionieren. Führen Sie dazu einfach Folgendes aus: 

conda install spyder=3.1

im Terminal, während Ihre bevorzugte Umgebung aktiv ist. Dies ist nicht ideal, da die Entwickler die Python-Konsole aus einem bestimmten Grund entfernt haben, wie in dieser Frage erwähnt, So fügen Sie die Python-Konsole in spyder hinzu . Ein weiteres Herabstufen dieses Ausmaßes kann unvorhergesehene Auswirkungen auf andere von Ihrem Code verwendete Pakete haben und andere Probleme verursachen, aber bisher war dies die einzige Lösung, die ich gefunden habe. 

2
JJR4

Soweit ich erfahren habe, scheint das Problem bei der neuesten Hauptversion des ipython-Kernels zu liegen. Die Fixierung der Version von ipykernel auf 4.10.0 löste es für mich. Fügen Sie dazu der Datei ipykernel 4.* eine Zeile mit ~/anaconda3/conda-meta/pinned hinzu. Erstellen Sie die Datei, falls sie noch nicht vorhanden ist. Dann conda update ipykernel, der tatsächlich auf 4.10.0 heruntergestuft wird. Arbeitete für mich!

4
Sjoerd

@JJR4s Antwort hat für mich nicht funktioniert (scheint für andere zu funktionieren). Eine andere Problemumgehung besteht darin, den %connect_info magic-Befehl in die IPython Spyder-Konsole einzugeben, die die JSON-Informationen anzeigt, um eine andere Konsole mit dem Kernel zu verbinden.

Die Ausgabe des Magic-Befehls erläutert, wie eine Verbindung hergestellt wird. Grundsätzlich gibt es drei Optionen.

Fügen Sie den obigen JSON-Code in eine Datei ein und stellen Sie eine Verbindung her mit:

$> jupyter <app> --existing <file>

oder, wenn Sie lokal sind, können Sie eine Verbindung herstellen mit:

$> jupyter <app> --existing <kernel>.json

oder auch nur:

$> jupyter <app> --existing

wenn dies der letzte Jupyter-Kernel ist, den Sie gestartet haben.

Normalerweise verwende ich qtconsole als App. Wenn Sie die gewünschte Verbindungsmethode in die Befehlszeile eingeben, wird eine neue Konsole geöffnet, die mit demselben Kernel wie die Konsole in Spyder verbunden ist. Aus irgendeinem Grund bleibt die neue Konsole auch dann nicht hängen, wenn die Spyder-Konsole dies tut.

Geben Sie alles in die neue Konsole ein, auch runfile()

Hoffe das hilft!

UPDATE: Ein Downgrade auf ipykernel Version 4.10 scheint das Problem für mich zu lösen. Danke an Carlos Cordoba - siehe GitHub-Konversation im Link unten.

0
Charlie Roe