Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Python programmalastırıw tilin úyreniw 2-BÓLIM

.pdf
Скачиваний:
1
Добавлен:
24.10.2024
Размер:
259.32 Кб
Скачать

kompilyatorlarınan birqansha parıq qıladı. Haqıyqatında, Psyco arnawlı JIT kompilyatorı bolıp tabıladı - ol siziń baǵdarlamańız haqıyqatında qollanıp atırǵan maǵlıwmat tiplerine arnap jobalastırılǵan mashina kodın payda etedi. Mısalı, eger siziń baǵdarlamańızdıń bir bólegi hár qıylı waqıtta hár túrli maǵlıwmat tiplerin qollansa, Psyco hár bir túrli tip kombinaciyasın qollap-quwatlaw ushın mashina kodınıń hár qıylı versiyaların payda etiwi múmkin.

Psyco Python kodın áhmiyetli dárejede tezlestiretuǵını kórsetilgen. Onıń vebbetine muwapıq, Psyco "ózgertilmegen Python interpretatorı hám ózgertilmegen derek kodı menen, tek ǵana dinamikalıq júkleniwshi C keńeytpe moduli arqalı 2x ten 100x ke shekem tezlestiriwdi, ádette 4x tezlestiriwdi" támiyinleydi. Birdey áhmiyetke iye bolǵan nárse, eń úlken tezlesiwler taza Python tilinde jazılǵan algoritmlik kod ushın ámelge asırıladı - bul ádette optimizaciya ushın C tiline kóshiriw múmkin bolǵan kodtıń dál túri. Psyco menen bunday kóshiriwler ele de az áhmiyetli boladı.

Psyco ele Pythonnıń standart bólegi emes; sizge onı bólek júklep alıw hám ornatıw kerek boladı. Ol ele izertlew proekti bolıp esaplanadı, sonlıqtan onıń rawajlanıwın onlayn baqlawıńız kerek boladı. Haqıyqatında, usı waqıtta Psyco ele óz aldına júklep alınıp hám ornatılsa da, sistemanıń kóp bólegi aqır-aqıbetinde jańalaw "PyPy" proektine sińdirilip ketiwi múmkin - bul Psyco sıyaqlı optimizaciyalardı jaqsıraq qollap-quwatlaw ushın Pythonnıń PVM in Python kodında qayta iske asırıw háreketi.

Bálkim, Psyco nıń eń úlken kemshiligi - ol házirgi waqıtta tek Intel x86 arxitekturalı chipler ushın mashina kodın payda etedi, biraq buǵan Windows hám Linux kompyuterleri hám jaqında shıqqan Mac ler kiredi. Psyco keńeytpesi hám payda bolıwı múmkin bolǵan basqa JIT háreketleri haqqında tolıǵıraq maǵlıwmat alıw ushın http://www.python.org saytına kiriń; siz sonday-aq Psyco nıń bas betin kórip shıǵıwıńız múmkin, ol házirgi waqıtta http://psyco.sourceforge.net mánzilinde jaylasqan.

Shedskin C++ awdarıwshısı

Shedskin - bul Python baǵdarlamasın orınlawǵa basqasha usıldı qollanıwshı payda bolıp atırǵan sistema - ol Python derek kodın C++ kodına awdarıwǵa háreket etedi, soń kompyuterińizdiń C++ kompilyatorı onı mashina kodına kompilaciya qıladı.

Usılay etip, ol Python kodın iske túsiriwdiń platforma-neytral usılın kórsetedi.

Bul sózlerdi jazıp atırǵan waqtımda Shedskin ele eksperimentallıq basqıshta, hám ol Python baǵdarlamaların texnikalıq jaqtan normal Python bolmaǵan anıq statikalıq tipke iye sheklewge iye qıladı, sonlıqtan biz bul jerde qosımsha túsinik bermeymiz.

Dáslepki nátiyjeler, biraq, onıń orınlaw tezligi boyınsha hám standart Python nan, hám Psyco keńeytpesinen asıp ketiw potencialına iye ekenligin kórsetedi, hám bul úmitli proekt. Proekttiń házirgi jaǵdayı haqqında tolıǵıraq maǵlıwmat alıw ushın internetten izleń.

Muzlatılǵan binarlar

Geyde adamlar "haqıyqıy" Python kompilyatorın soraǵanda, olar negizinde Python baǵdarlamalarınan ózbetinshe orınlanatuǵın binar faylların jaratıw usılın izlep atırǵan boladı. Bul orınlaw procesi koncepciyasınan góre, kóbirek qaplaw hám jiberiwge baylanıslı ideya, biraq ol belgili dárejede baylanıslı.

Internetten alıp bolatuǵın úshinshi tárep qurallardıń járdeminde, Python baǵdarlamalarıńızdı haqıyqıy orınlanatuǵın fayllarǵa aylandırıw múmkin, olar Python dúnyasında muzlatılǵan binarlar dep ataladı. Muzlatılǵan binarlar siziń baǵdarlama fayllarıńızdıń bayt kodın, PVM (interpretator) menen birge hám baǵdarlamaǵa kerekli barlıq Python qollap-quwatlaw faylların bir paketke jıynaydı.

Bul temanıń bir neshe variantları bar, biraq aqırǵı nátiyje bir dana binar orınlanatuǵın baǵdarlama bolıwı múmkin (mısalı, Windows ta .exe fayl), onı tutınıwshılarǵa ańsat jiberiwge boladı. 2-2-súwrette kórsetilgendey, bayt kod hám

PVM bir komponentke biriktirilgen - muzlatılǵan binar faylǵa.

Búgingi kúnde muzlatılǵan binarlar jaratıwǵa qábiletli úsh tiykarǵı sistema bar: py2exe (Windows ushın), PyInstaller (py2exe ge uqsas, biraq Linux hám Unix ta da isleydi hám ózi ornatılatuǵın binarlar jarata aladı), hám freeze (dáslepki). Bul qurallardı Pythonnan bólek alıwıńız kerek bolıwı múmkin, biraq olar biypul ashıq. Olar úziliksiz rawajlanıp atır, sonlıqtan bul qurallar haqqında tolıǵıraq maǵlıwmat alıw ushın http://www.python.org saytına yamasa ózińiz qálegen izlew sistemasına baylanısıń.

Bul sistemalardıń kólemi haqqında túsinik beriw ushın, py2exe tkinter, PMW, wxPython hám PyGTK GUI kitapxanaların qollanıwshı óz aldına baǵdarlamalardı; pygame oyın dúziw quralların qollanıwshı baǵdarlamalardı; win32com klient baǵdarlamaların hám basqalardı muzlata aladı.

Muzlatılǵan binarlar haqıyqıy kompilyatordıń shıǵısı menen birdey emes - olar bayt kodtı virtual mashina arqalı iske túsiredi. Sonlıqtan, múmkin bolǵan iske túsiw tezleniwin esapqa almaǵanda, muzlatılǵan binarlar dáslepki derek faylları menen birdey tezlikte isleydi.

Muzlatılǵan binarlar kishi emes (olarda PVM bar), biraq házirgi standartlar boyınsha olar ádettegiden tıs úlken de emes. Biraq, Python muzlatılǵan binarda jaylasqanlıǵı sebepli, siziń baǵdarlamanı iske túsiriw ushın onı alıwshı tárepte ornatıw shárt emes. Bunnan tısqarı, siziń kodıńız muzlatılǵan binarda jaylasqanlıǵı sebepli, ol alıwshılardan tábiyiy jasırın boladı.

Bul bir fayllı qaptaw sxeması ásirese kommerciyalıq baǵdarlama islep shıǵarıwshılar ushın júdá qızıqlı. Mısalı, tkinter quralları tiykarında Pythonda jazılǵan paydalanıwshı interfeysi baǵdarlaması atqarılıwshı fayl túrinde muzlatılıp, CD diskte yamasa internette óz-ózine jetkilikli baǵdarlama sıpatında jiberiliw múmkin. Aqırǵı paydalanıwshılarǵa jiberilgen baǵdarlamanı iske túsiriw ushın Pythondı ornatıw (hatteki ol haqqında biliw de) shárt emes.

Basqa orınlaw variantları

Python baǵdarlamalarıń iske túsiriwdiń basqa da sxemaları bar bolıp, olardıń maqsetleri anıǵıraq:

Stackless Python sisteması - bul standart CPython ámelge asırıwınıń variantı bolıp, C tiliniń shaqırıw steginde halattı saqlap qalmaydı. Bul Pythondı kishi stek arxitekturalarına kóshiriwdi ańsatlastıradı, nátiyjeli kóp processorlı variantlardı usınadı hám korutinalar sıyaqlı jańa baǵdarlamalastırıw strukturaların qollapquwatlaydı.

Cython sisteması (Pyrex proektiniń jumısı tiykarında) - bul Python kodın C funkciyaların shaqırıw hám ózgeriwshiler, parametrler hám klass atributları ushın C tip deklaraciyaların qollanıw múmkinshiligi menen birlestirgen gibrid til. Cython kodı Python/C API dı qollanıwshı C kodına kompilyaciya etiliw múmkin, keyin tolıq kompilyaciya etiliwi múmkin. Standart Python menen tolıq úylesimli bolmasa da, Cython sırtqı C kitapxanaların ornatıp alıw hám Python ushın nátiyjeli C keńeytpelerin kodlaw ushın paydalı bolıwı múmkin.

Bul sistemalar haqqında tolıǵıraq maǵlıwmat alıw ushın, internetten jańa siltemelerdi izleń.

Keleshektegi múmkinshilikler?

Aqırında, bul jerde súwretlengen orınlaw waqtındaǵı atqarıw modeli Python tiliniń óziniń emes, al onıń házirgi ámelge asırılıwınıń nátiyjesі ekenin este tutıw kerek. Mısalı, bul kitaptıń qollanılıw múddeti ishinde Python derek kodın mashina kodına awdaratuǵın tolıq, dástúrli kompilyator payda bolıwı múmkin (biraq jigirma jılǵa jaqın waqıt dawamında bunday bolǵan joq!). Keleshekte jańa bayt kod formatları hám ámelge asırıw variantları da qabıl etiliw múmkin. Mısalı:

Parrot proektiniń maqseti - hár qıylı baǵdarlamalastırıw tilleri ushın ulıwma bayt kod formatın, virtual mashinanı hám optimizaciya texnikasın usınıw (http://www.python.org saytına qarań). Pythonnıń óz PVM-i Python kodın Parrotqa qaraǵanda nátiyjeli túrde orınlaydı, biraq Parrottıń qalay rawajlanatuǵını ele belgisiz.

PyPy proekti - bul jańa ámelge asırıw texnikasın qollaw ushın PVM-di Pythonnıń ózinde qayta ámelge asırıw háreketi. Onıń maqseti - Pythonnıń tez hám iykemlі ámelge asırılıwın jaratıw.

Google támiyinlegen Unladen Swallow proektiniń maqseti - standart Pythondı kem degende 5 ese tezlestiriw hám kóp jaǵdaylarda C tilin almastıra alatuǵınday tez etiw. Bul CPythonnıń optimizaciya tarmaǵı bolıp, tolıq úylesimli hám ádewir tez bolıwı názerde tutılǵan. Bul proekt sonday-aq, haqıyqıy Python potokların waqıt boyınsha bir-birine qabatlastırıwǵa jol qoymaytuǵın Python kóp potoklı Global Interpretator Qulpın (GIL) alıp taslaw úmitin de bildiredi. Bul házirgi waqıtta Google injenerleri tárepinen ashıq derek retinde rawajlandırılıp atırǵan payda bolıp kiyatırǵan proekt; dáslepki náwbette Python 2.6 nusqasın obyekt etip alǵan, biraq 3.0 nusqası da onıń ózgerislerin óz ishine alıwı múmkin. Eń sońǵı maǵlıwmatlar ushın Google-dan izlew kerek.

Bunday keleshektegi ámelge asırıw sxemaları Pythonnıń orınlaw waqtındaǵı qurılısın bir qansha ózgertiwi múmkin bolsa da, bayt kod kompilyatorı ele uzaq waqıt dawamında standart bolıp qalatuǵını itimal. Bayt kodınıń kóshirmeligі hám orınlaw waqtındaǵı iykemliligi kóplegen Python sistemalarınıń áhmiyetli ózgeshelikleri bolıp tabıladı. Bunnan tısqarı, statikalıq kompilyaciyaǵa qollapquwatlaw ushın tip sheklewleri deklaraciyaların qosıw Python kodın jazıwdıń iykemliligin, qısqalıǵın, ápiwayılıǵın hám ulıwma ruwxın buzǵan bolar edi. Pythonnıń júdá dinamikalıq tábiyatına baylanıslı, keleshektegi hár qanday ámelge asırıw házirgi PVM-niń kóplegen elementlerin saqlap qalıwı itimal.

Bap juwmaǵı

Bul bapta Pythonnıń orınlaw modeli (Python siziń baǵdarlamalarıńızdı qalay orınlaydı) tanıstırıldı hám bul modeldiń ayırım keń tarqalǵan variantları (waqtında kompilyaciya qılıwshılar hám basqalar) úyrenildi. Python skriptlerin jazıw ushın Python ishki qurılısın túsiniw shárt bolmasa da, bul baptıń temaları menen azǵana tanısıw sizge óz baǵdarlamalarıńızdıń qalay isleytuǵının tolıq túsiniwge járdem beredi. Keyingi bapta siz ózińizdiń kodıńızdı haqıyqattan da orınlap baslaysız. Biraq, dáslep, ádettegidey bap sorawları keledi.

Bilimińizdi tekseriń: Sorawlar

1.Python interpretatorı degen ne?

2.Derek kodı degen ne?

3.Bayt kodı degen ne?

4.PVM degen ne?

5.Pythonnıń standart orınlaw modeliniń eki variantın atań.

6.CPython, Jython hám IronPython qanday tárepleri menen parıq qıladı?

Bilimińizdi tekseriń: Juwaplar

1.Python interpretatorı - bul siz jazǵan Python baǵdarlamaların orınlaytuǵın baǵdarlama.

2.Derek kodı - bul siz baǵdarlamańız ushın jazǵan buyrıqlar. Ol ádette .py keńeytpesi menen tamamlanıwshı tekst fayllarındaǵı tekstten ibarat.

3.Bayt kodı - bul Python kompilyaciya qılǵannan keyingi baǵdarlamańızdıń tómengi dárejedegi forması. Python bayt kodın avtomatik túrde .pyc keńeytpeli fayllarǵa saqlaydı.

4.PVM - bul Python Virtual Machine (Python Virtual Mashinası) - kompilyaciya qılınǵan bayt kodıńızdı interpretaciya qılatuǵın Pythonnıń orınlaw dvigateli.

5.Psyco, Shedskin hám muzlatılǵan binarlar - bulardıń barlıǵı orınlaw modeliniń variantları.

6.CPython - tildiń standart ámelge asırılıwı. Jython hám IronPython Python baǵdarlamaların sáykes Java hám .NET ortalıqlarında paydalanıw ushın ámelge asıradı; olar Python ushın alternativ kompilyatorlar bolıp tabıladı.

Paydalanılǵan ádebiyat:

Learning Python, Fourth Edition by Mark Lutz

CHAPTER 2

How Python Runs Programs