Wie macht man Python schneller?

高洛峰
Freigeben: 2016-10-18 14:36:20
Original
1385 Leute haben es durchsucht

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;
Nach dem Login kopieren

In Python:

def fib(n):
  if n < 2:
     return n
  else:
     return fib(n - 1) + fib(n - 2)
fib(40)
Nach dem Login kopieren

Die folgenden sind ihre jeweiligen Ausführungszeiten:

$ time ./fib
3.099s
  
$ time python fib.py
16.655s
Nach dem Login kopieren

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
Nach dem Login kopieren

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

sudo yum install python-psyco
Nach dem Login kopieren

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)
Nach dem Login kopieren

Haha, erlebe den Moment des Wunders! !

$ time python fib.py
3.190s
Nach dem Login kopieren

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
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage