A Python értelmezett nyelv, tehát mik azok a .pyc compile fájlok?


Legjobb válasz

A Python értelmezése megtörtént. Noha az ember által olvasható forrást bytecoddá alakítja, amelyet a .pyc fájlban tárol, és a .pyc fájl hordozható, a .pyc fájlt ennek ellenére értelmezik. Például egyes python-tolmácsok gyorsítótárba helyeznek egy-egy objektumot a gyakran használt egész számokhoz -100–100. Hogyan számít?

A rendszer jogi értelemben értelmezheti az is műveletet, amely az Object.id () -t igaznak vagy hamisnak hasonlítja.

x = 20

x is 20 # Both True and False are valid results.

Bemutató:

$ python3

Python 3.6.3 (default, Oct 3 2017, 21:45:48)

[GCC 7.2.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> x = 30

>>> x is 30

True

>>> x = 23442.2

>>> x is 23442.2

False

>>>

A A python forrás bájtkódjába időbe telik, ésszerűen gyorsabb, ha a python elolvassa a .pyc fájlt, mint hogy olvassa a forrást és rekonstruálja a .pyc-t.

Volt idő, és nem lépést tartottam vele modulok importálása, amikor a python a \_\_init\_\_.py fájlt keresi egy könyvtárban a modul betöltéséhez. Bölcs dolog volt azt a \_\_init\_\_.py fájlt kicsiben tartani, hogy többnyire csak másodlagosan importálja a hasznos kódot, amely egy .pyc fájlban található.

És a python optimalizálás ment-e valahova? Utoljára tudtam, ami már jó ideje volt. A .pyo egy .pyc volt, a megjegyzések lecsupaszítva.

Válasz

Erre itt már válaszoltam: Quildreen Motta válasza Összeállítható egy olyan magas szintű nyelv, mint a Python, ezáltal olyan gyors, mint a C?

De röviden: az emberek nem használják a C vagy a C ++ szót, mert “re gyorsan , azért használják őket, mert kissé kiszámítható teljesítményük van . Ezután a programozó időt szakíthat arra, hogy kézzel optimalizálja programjait, és sokkal könnyebb megmagyarázni az ezen optimalizálásokból adódó teljesítményt.

Ezt nem olyan könnyű megtenni egy dinamikus nyelvben, mint a Python. Ennek ellenére a PyPy gyorsabb, mint A C (gcc, nem teljesen kézzel optimalizált) teljesítmény több szcenárióban, csak nem tudja megjósolni, hogy ezek a szcenáriók mikor történnek, mert ez több tényezőtől függ (mely adatok mennek keresztül a programon, mely ágakat vették fel, a elágazik t felett ime, a kód forrása stb.).

Természetesen a PyPy elvégzi az összes optimalizálást, miközben futtatja a programot, ezért sok költség-súlyozást kell elvégeznie, és néhány optimalizációt nem alkalmaznak amiatt. Ahogy az AOT fordítók 3 hónapot tölthettek el a kódod elemzésével, hogy TÉNYLEG GYORS KÓDOT hozzanak létre, a JIT optimalizálói perceket tölthetnek a kódod elemzésével. Valószínűleg egyik esetben sem térül meg a költség, ezért ezt nem teszik meg.

Az AOT-fordítók Python számára való elvégzése sokkal nehezebb, mert a Python dinamikus nyelv. Az AOT-fordítók, például a shedskin – egy kísérleti (korlátozott-Python) -to-C ++ fordító , ehelyett a Python korlátozott részhalmazát használja statikusan elemezni. Ez a megközelítés hasonló a az egyiket az RPython vette át, amelyen a PyPy alapul.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük