Źródło obrazu: pixabay.com

Jak sprawić, by Python był szybki jak Psyco

Cześć chłopaki, witam na moim kolejnym blogu Python. Ale dzisiaj nie będę mówił o szybkim Pythonie. Więc zanim przejdę dalej, zakładam, że znasz już bity i * bajty dotyczące Pythona. Jeśli jesteś początkujący, możesz wyszukać moje inne blogi, dowiedzieć się więcej o pythonie, a następnie wrócić do nas. teraz dyskutujemy na temat Python szybko jako Psyco.

Jeśli jesteś doświadczonym programistą w innej dziedzinie i myślisz, że znasz podstawy, a teraz możesz przeczytać ten blog, to po prostu zadaj sobie jedno pytanie, czy wiesz, co to jest Psyco? Jeśli w tym momencie myślisz, że ten „Psyco” oznacza szalony, to znowu to nie jest dla ciebie.

Nadal unikałeś wielu podstawowych rzeczy lub żartujesz sobie, mówiąc, że jesteś doświadczonym programistą. Zaufaj mi, postaram się uczynić tego bloga tak łatwym, jak to możliwe i postaram się nikogo nie urazić. Ale jeśli nie masz odpowiednich podstaw, trudniej będzie ci to zrozumieć.

Odłóż na bok trudną część, sprawiając, że nawet zaczniesz myśleć, że szybkie Pythona jest znacznie trudniejsze niż jakiekolwiek inne programowanie, które jest absolutnie złe. Więc teraz wiemy, co jest, przejdźmy do tego, prawda?

Co to jest Psyco?

Czym jest Psyco? Psyco sprawia, że ​​Python jest szybki. Zmieszany? Tak, ja też byłem zdezorientowany, kiedy to usłyszałem po raz pierwszy. Python jest już szybki, więc po co używać psyco? Właśnie dlatego powiedziałem. Ten blog nie jest przeznaczony dla noobów i początkujących. Jeśli kodowałeś w Pythonie przez długi czas, tworząc dużą liczbę kodów i wszystko, wtedy będziesz wiedział, że szybkie python wymaga zwartego i ścisłego kodowania. Przy odpowiednim typie kodowania możesz uczynić go szybkim i kompaktowym.

Ale potrzebuje czasu i innych rzeczy. Nie można tworzyć zwartych i wolnych od błędów kodów zupełnie od zera. I tu właśnie powstaje Psyco. Psyco jest tylko szybkim modułem rozszerzającym Pythona, który przyspiesza wykonanie kodu uruchamiającego Pythona. Więc możesz być teraz zdezorientowany, moduł przyspieszający działanie kodu Python? Tak, dokładnie o to chodzi. Przejdźmy do większego obrazu.

Python i jego prawdziwa natura

Jeśli kodowałeś wcześniej w Javie lub C, możesz pomyśleć, że uruchamianie Pythona jest wyjątkowo szybkie niż w innych. Ale tam się mylisz. Pod względem wydajności surowej python jest zdecydowanie wolniejszy niż C, Java lub C #. Ale python nie jest znany z tego, że ma szybkość w surowej wydajności.

Tylko początkujący lub noobowie wykonują surowe kodowanie. Profesjonalni ludzie wykonują prawidłowe kodowanie wraz z odpowiednimi wcięciami *. Kiedy porównujesz poprawnie skompilowany kod i mierzysz całkowite użycie pamięci, początkowy czas uruchamiania, czas ładowania, to w tym momencie uruchamianie Pythona jest niezwykle szybkie.

Poza tym, jeśli próbujesz pisać kody do tworzenia serwera lub innych rzeczy, Java jest niezwykle szybka, nawet szybsza niż C. Jest to możliwe, ponieważ wirtualna maszyna Java może skompilować gorący kod bajtowy do kodu maszynowego. Robiąc to, może w pełni wykorzystać każdą funkcję procesora.

Zwykle tak nie jest w przypadku C, przynajmniej do momentu opuszczenia środowiska laboratoryjnego. Załóżmy teraz, że dystrybuujesz kilkanaście zoptymalizowanych wersji wśród swoich klientów - to po prostu nie zadziała.

Wróćmy teraz do naszego głównego punktu, jeśli czas uruchamiania jest problemem (który nie jest na przykład problemem dla aplikacji serwerowej) Java może nie być najlepszą alternatywą. Może to również zależeć od tego, gdzie znajdują się twoje obszary gorącego kodu, na przykład: Jeśli znajdują się w natywnych bibliotekach z szybkim kodem Pythona, aby po prostu skleić je ze sobą, będziesz w stanie uzyskać wydajność podobną do C dzięki Pythonowi również. Jednak nadal języki skryptowe będą działały wolniej - przynajmniej przez większość czasu.

Polecane kursy

  • Kurs online VB.NET
  • Szkolenie certyfikacyjne online z zakresu Data Science
  • Profesjonalny kurs ISTQB
  • Program Kali Linux

Psyco - dokładnie tak to brzmi

Tak, przeczytałeś to dobrze. Wróćmy teraz do naszego głównego tematu. Oto, co programiści psyco definiują na swojej stronie internetowej:

„Pomyśl o Psyco jako o kompilatorze just-in-time (JIT), trochę podobnym do tego, który istnieje w innych językach, który emituje kod maszynowy w locie zamiast interpretować program Python krok po kroku. Różnica w stosunku do tradycyjnego podejścia do kompilatorów JIT polega na tym, że Psyco zapisuje kilka wersji tych samych bloków (blok jest trochę funkcją), które są zoptymalizowane przez specjalizację do niektórych rodzajów zmiennych („rodzaj” może oznaczać typ, ale jest bardziej ogólna). W rezultacie twoje niezmodyfikowane programy w języku Python działają szybciej.

Przyspieszenia od 2x do 100x, zwykle 4x, z niezmodyfikowanym interpreterem Pythona i niezmodyfikowanym kodem źródłowym, po prostu dynamicznie ładowanym modułem rozszerzającym C. ”

Krótko mówiąc, aby sformułować to w prostym stwierdzeniu, Psyco zapewni ci większą wydajność podobną do Javy. Otrzymasz wolniejsze czasy uruchamiania i większe zużycie pamięci w zamian za szybsze algorytmy.

Powiedziawszy to, są pewne rzeczy, o których należy pamiętać podczas testowania języków takich jak Java i Python. Kod w tych językach może często zostać znacznie przyspieszony poprzez użycie konstrukcji bardziej dopasowanych do języka (np. Szybkie rozumienie list w Pythonie lub użycie char () i String Buildera do niektórych operacji na String w Javie).

Ponadto, w przypadku Pythona szybko, użycie Psyco może znacznie przyspieszyć działanie programu. A potem jest cała kwestia używania odpowiednich struktur danych i pilnowania złożoności kodu w czasie wykonywania.

Aby zrozumieć psyco w Pythonie, trzeba dobrze zrozumieć funkcję eval_frame () Pythona. Python psyco konwertuje funkcję eval_frame pythona na złożoną jednostkę oceniającą, a psyco używa przy tym dużej ilości pamięci. Korzystanie z psyco jest o wiele łatwiejsze niż wyjaśnienie.

Aby po prostu użyć psyco, pobierz moduł psyco ze sourceforge.net, a następnie zachowaj ten kod na początku pierwszego kodu:

import psyco ; psyco.jit()

from psyco.classes import *

Następnie możesz użyć następującego polecenia, aby precyzyjniej ukierunkować zachowanie psyco:

psyco.bind(somefunc) # or method, class

newname = psyco.proxy(func)

Jeśli te rzeczy na początku nie działają, musisz uzbroić się w cierpliwość. Wymaga prób i błędów. Nie możesz bezpośrednio oczekiwać, że twój program będzie działał jak Usain Bolt. Oszczędź mi sarkastycznego niegrzecznego zachowania, ale tak to działa.

W rzeczywistości python psyco nie zmienia ani nie modyfikuje kodu, aby był mądrzejszy. Prawie nie profiluje twojego kodu. Dokonuje minimalnej optymalizacji, aby zbliżyć się do kodu maszynowego, jak to możliwe.

Chociaż Python psyco sprawia, że ​​twoje programy są tak szybkie jak C, istnieją pewne ograniczenia i wady. Oto niektóre, które wymieniłem poniżej:

  1. Psyco jest teraz przestarzałe, nieobsługiwane i martwe. Zastąpienie to PyPy
  2. Psyco ma wiele problemów z nawet Pythonem 2.7. Ale działa znacznie lepiej i szybciej w wersji 2.5
  3. Psyco nie działa na komputerach 64-bitowych. Ale można zainstalować maszynę wirtualną z architekturą i386 i sprawić, by działała.
  4. Mac OSX domyślnie jest wyposażony w Pythona w wersji 64-bitowej. Trzeba będzie ponownie skompilować python x86 ze źródła, aby Psyco działało.

Mimo wielu problemów ludzie nadal używają Psyco zamiast PyPy. Ale znowu, jeśli mnie zapytasz, PyPy jest niesamowitą alternatywą dla Psyco. Psyco działa jak kompilator Just In Time, ale PyPy ma własny kompilator Just in time. Tam, gdzie Psyco wykorzystuje dużo pamięci, PyPy zużywa znacznie mniej pamięci niż Psyco. PyPy jest jeszcze bardziej kompatybilny z frameworkami takimi jak Django i Twisted.

Po tym wszystkim, bez względu na to, co powiem, to na nasz własny użytek. Ludzie z doświadczeniem Psyco zawsze będą sugerować używanie Psyco, podczas gdy ludzie, którzy chcą prędkości, potrzebują PyPy. Ale pozwól mi coś zacytować.

„Mimo że dobrze czujesz się w motocyklach takich jak R1 lub Hayabusa, czasami jazda Harleyem Davidsonem ma swoją przyjemność”

Działa tak samo z Psyco i PyPy. Na koniec, bez zbędnych ceregieli, sugerowałbym użycie obu na początku, a następnie kontynuowanie w zależności od tego, co czujesz się komfortowo.

Polecane artykuły:

Oto kilka artykułów, które pomogą ci uzyskać więcej szczegółów na temat Python Fast And psyco, więc po prostu przejdź przez link.

  1. Różnice między systemem Linux a Ubuntu
  2. 25 najbardziej niesamowitych pytań i odpowiedzi podczas wywiadu w języku Python
  3. Kariera w Pythonie
  4. Python vs Node.js
  5. Pomocny przewodnik po Kali Linux vs Ubuntu
  6. Lista kompilatorów Python