Heim >Backend-Entwicklung >Python-Tutorial >Wie macht man Python schneller?

Wie macht man Python schneller?

高洛峰
高洛峰Original
2016-10-18 14:36:201415Durchsuche

Python und andere Skriptsprachen werden oft aufgegeben, weil sie im Vergleich zu kompilierten Sprachen wie C ineffizient sind. Zum Beispiel das folgende Beispiel für Fibonacci-Zahlen:

In C-Sprache:

int fib(int n){
   if (n < 2)
     return n;
   else
     return fib(n - 1) + fib(n - 2);
}
int main() {
    fib(40);
    return 0;

In Python:

def fib(n):
  if n < 2:
     return n
  else:
     return fib(n - 1) + fib(n - 2)
fib(40)

Die folgenden sind ihre jeweiligen Ausführungszeiten:

$ time ./fib
3.099s
  
$ time python fib.py
16.655s

Wie erwartet ist die Ausführungseffizienz der C-Sprache in diesem Beispiel fünfmal schneller als die von Python.


Im Fall von Web Scraping ist die Ausführungsgeschwindigkeit nicht sehr wichtig, da der Engpass im I/O liegt – dem Herunterladen der Webseite. Ich möchte Python aber auch in anderen Umgebungen verwenden. Schauen wir uns also an, wie ich die Ausführungsgeschwindigkeit von Python verbessern kann.


Zuerst installieren wir ein Python-Modul: psyco. Die Installation ist sehr einfach:

sudo apt-get install python-psyco

Oder if Du bist auf Centos, führe Folgendes aus:

sudo yum install python-psyco

Dann lass uns überprüfen:

#引入psyco模块,author: www.pythontab.com
import psyco
psyco.full()
def fib(n):
  if n < 2:
     return n
  else:
     return fib(n - 1) + fib(n - 2)
fib(40)

Haha, erlebe den Moment des Wunders! !

$ time python fib.py
3.190s

Es dauerte nur 3 Sekunden. Nach Verwendung des Psyco-Moduls läuft Python so schnell wie C!


Jetzt füge ich den folgenden Code zu fast den meisten meines Python-Codes hinzu, um die Geschwindigkeitsverbesserung durch Psyco zu genießen

try:
    import psyco
    psyco.full()
except ImportError:
    pass # psyco not installed so continue as usual


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn