Python on tulkittu kieli, joten mitä ovat .pyc-kääntötiedostot?


Paras vastaus

python tulkitaan. Vaikka se muuntaa ihmisen luettavan lähteen tavukoodiksi, jonka se tallentaa .pyc-tiedostoon, ja .pyc-tiedosto on kannettava, .pyc-tiedostoa tulkitaan kuitenkin. Jotkut python-tulkit esimerkiksi tallentavat välimuistiin yksittäisiä objekteja yleisesti käytetyille kokonaisluvuille -100 – 100. Jotkut eivät. Kuinka sillä on merkitystä?

Järjestelmä voi laillisesti tulkita is-operaation, joka vertaa Object.id (): ta tosi tai vääräksi.

x = 20

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

Esittely:

$ 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

>>>

Muuntaa python-lähde tavukoodiin vie aikaa, kohtuullisesti pythonin on nopeampi lukea .pyc-tiedosto kuin lukea lähde ja rekonstruoida .pyc.

Oli aika, enkä ole pysynyt mukana moduulien tuominen, kun python etsii hakemistosta \_\_init\_\_.py moduulin lataamiseksi. Oli järkevää pitää \_\_init\_\_.py-tiedosto pienenä, jotta se yleensä toisi toissijaisesti hyödyllisen koodin, joka asuisi .pyc-tiedostossa.

Ja menikö python-optimointi mihin tahansa? Viimeinkin tiesin, mikä oli melko kauan sitten, .pyo oli .pyc, jonka kommentit oli riisuttu.

Vastaus

Olen vastannut tähän aiemmin täällä: Quildreen Motta vastasi Voiko Pythonin kaltaisen korkean tason kielen kääntää siten, että se on yhtä nopea kuin C?

Mutta lyhyesti sanottuna ihmiset eivät käytä C: tä tai C ++: ta, koska he ”re nopeasti , he käyttävät niitä, koska heillä on jonkin verran ennustettavissa oleva suorituskyky . Ohjelmoija voi sitten käyttää aikaa ohjelmiensa optimointiin käsin ja on paljon helpompi päättää näiden optimointien tuloksesta.

Se ei ole niin helppoa dynaamisella kielellä, kuten Python. PyPy antaa sinulle nopeammin kuin C (gcc, ei täysin käsin optimoitu) suorituskyky useissa skenaarioissa, et vain voi ennustaa, milloin nämä skenaariot tapahtuvat, koska se riippuu useista tekijöistä (mitkä tiedot ovat ohjelmasi läpi, mitkä haarat on otettu, haarautuu t: n yli eli koodin kuumuus jne.).

PyPy tietysti suorittaa kaikki optimoinnit, kun se ajaa ohjelmaa, joten sen on tehtävä paljon kustannuspainotuksia ja joitain optimointeja ei sovelleta tämän takia. Aivan kuten AOT-kääntäjät voisivat viettää 3 kuukautta koodisi analysoinnilla TODELLA NOPEAN KOODIN luomiseksi, JIT-optimoijat voisivat viettää minuutteja koodin analysoinnissa. Kummassakaan tapauksessa kustannukset eivät todennäköisesti kannata, joten he eivät tee niin.

AOT-kääntäjien tekeminen Pythonille on paljon vaikeampaa, koska Python on dynaaminen kieli. AOT-kääntäjät, kuten shedskin – kokeellinen (rajoitettu-Python) – C ++ kääntäjä , käytä sen sijaan Pythonin rajoitettua osajoukkoa voidaksesi analysoida sitä staattisesti. Tämä lähestymistapa on samanlainen kuin yksi otti RPython, johon PyPy perustuu.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *