2012-06-05 19 views
27

Ich habe nach Antworten gesucht und vieles scheint alt oder veraltet zu sein. Wurde Python 3 bereits aktualisiert, so dass es anständig schneller ist als Python 2.7 oder bin ich immer noch besser dran, meinen funktionsfähigen Code beizubehalten?Python 2.7 oder Python 3 (für Geschwindigkeit)?

+0

Unicode-Unterstützung für bestimmte Anwendungsfall ist besser in Python 3. – nhahtdh

+0

Python 3 hat einige neue Optimierungen in einem Teil der Sprache, aber Python2 hat die ['pypy'-JIT-VM] (http://www.pypy.org), die Ihnen wesentliche Geschwindigkeitsverbesserungen bringen kann. Was ist deine Frage? Wenn Sie bereits über Python 2-kompatiblen Code verfügen, können Sie entweder bei Python 2 bleiben oder mit einigen Codeänderungen zu Python 3 wechseln (es sei denn, es gibt Bibliotheken, die Sie in Python 3 nicht erhalten können). – birryree

+0

@birrreee Meine Frage ist, ob ich Geschwindigkeitsverbesserungen durch Portierung auf Python 3 erwarten könnte. Ich konnte Pypy nicht unter Windows arbeiten. – MyNameIsKhan

Antwort

30

Das Problem ist nicht um Geschwindigkeit - sie sind entweder mit der gleichen Geschwindigkeit oder Python 3.x schneller ist (je nachdem, welche Benchmarks Sie sehen). Genauer gesagt war Python 2 früher schneller, aber anscheinend sind sie jetzt auf Augenhöhe (?). Siehe die Kommentare und diese slide deck (nach hinten).

Die Kernentwickler arbeiten auch aktiv an der Optimierung von Python 3 - jede neue Version von Python 3 war faster then the last. Sie können über die neuesten Vorschläge und Ideen zur Optimierung von Python (sowie den vielen Komplikationen) auf dem Laufenden bleiben, indem Sie die python-dev mailing list überwachen.

vielmehr die vielen Menschen Grund verwendet für nicht aktualisiert zu geben ist, weil, wenn Python 3 herauskam, und seit einigen Jahren nach, die meisten Python-Bibliotheken nicht auf Python 3.x arbeiten aktualisiert wurden Glücklicherweise wird diese Situation heute jedoch erheblich verbessert - die meisten Bibliotheken von Drittanbietern sind jetzt Python 3-kompatibel.

Die Python FAQ enthält weitere Informationen. Sie können auch die Python Wall of Superpowers oder Py3 Readiness überprüfen einen Überblick, welche populäre Python-Bibliotheken zur Zeit mit Python kompatibel sind zu bekommen 3.

Update: (Sommer 2017)

ich etwas verpflichtet fühlen, dass die Unterstützung für Python zu beachten 2 ist formally ending in 2020.

Viele 3rd-Party-Bibliotheken sind auch folgende Anzug Planung - eine große Teilmenge des wissenschaftlichen Ökosystem (zB matplotlib, Pandas, ipython) planen auf dropping support for Python 2 in 2020, ist Django dropping support ... Ich würde nicht, wenn andere überrascht sein, Bibliotheken machen das Gleiche.

Wenn Sie also sicherstellen möchten, dass Sie die neuesten und besten Funktionen in Python oder Ihrer Lieblingsbibliothek verwenden können, sollten Sie eher früher als später auf die Migration zu Python 3 achten.

Hier sind einige Führer auf 2 bis 3 Python-Code Umwandlung:

+0

Dies ist auch genau (aus dem anderen Grund), warum ich noch nicht aktualisiert habe. Es scheint, dass die Unterstützung für viele der Bibliotheken, die ich verwende, begrenzt ist. – MyNameIsKhan

+16

Tatsächlich neigt Python 3 dazu, etwas langsamer als 2.x zu sein. Nicht viel, und Sie können sie für praktische Zwecke als die gleichen behandeln, aber die Tatsache, dass jede ganze Zahl jetzt ein "long" ist und jeder String jetzt "unicode" ist, hat einen gewissen Mehraufwand. – kindall

+0

Es gibt andere wichtige Geschwindigkeitsverbesserungen, insbesondere in Threading und GIL, also wenn Sie es für etwas verwenden, das Threads (die meisten Webserver) oder einige intensive Berechnungen involviert, wird wahrscheinlich> = 3.2 insgesamt schneller sein. – Feras

9

Python 3.3 eine Optimierung für Unicode-Strings enthalten, die ihren Speicherverbrauch reduziert . Das könnte übersetzen in schneller Code, wenn mehr davon in den Cache passt.

Wirklich der einzige Weg, zu wissen, ist Ihr kritischsten Code sowohl in der Benchmark und sieht, was der Unterschied ist.

+1

Ich stimme zu - Benchmarking ist der Weg zu gehen. – Michael0x2a

5

wird die Notwendigkeit von Bibliotheken für Ihre Anwendungen bestimmen, ob Python3 oder Pyhton2 besser ist.

+0

Er fragte nach Geschwindigkeit, nicht was besser ist. Er bat um Informationen, nicht um ein Urteil oder eine Vorliebe. – Xennex81

13

FYI, here ist eine Performance-Benchmark 3,3 Python 2.7 mit Python zu vergleichen. Python 3.3 kommt schneller als Python 2.7.

+0

@ JimFerrans ok, es ist jetzt aktualisiert –