Byte Code Compilation – हालांकि Python Programming करने के लिए आपको Python के Internals को समझना जरूरी नहीं होता, लेकिन फिर भी यदि आप Python की Internal Working को बेहतर तरीके से समझते हैं, तो Python Program Develop करते समय आपको पूरी तरह से पता होता है कि आपके द्वारा लिखा गया कौनसा Code किस तरह से Interpret होगा और किस तरह का Output Generate करेगा।
इसलिए Python Program के Execution के दौरान Program के Runtime Structure को समझना आपके लिए निश्चित रूप से उपयोगी होता है।
जब हम Python Interpreter को किसी Python Script को Run करने का Instruction देते हैं, तो Python Interpreter, Python Program को Interpret करना शुरू करने से Just पहले अग्रानुसार कुछ Specific Steps को Follow करता है।
Byte Code Compilation
जब हम किसी Python Script को Python Interpreter द्वारा Interpret करते हैं, तो बिना हमारी जानकारी के Python Interpreter सबसे पहले हमारे Python Program के Source Codes को एक अलग Format में Compile करता है, जिसे Byte Codes के नाम से जाना जाता है।
ये Compilation मूलत: एक Translation Step होता है और Byte Code, हमारे Source Code का एक Platform Independent Lower Level Representation होता है और ये Byte Code Translation इसलिए किया जाता है, क्योंकि Byte Code की Execution Speed, Pure Source Code के Execution की तुलना में काफी ज्यादा होती है।
ये Byte Code Compilation की पूरी प्रक्रिया हमारी जानकारी के बिना पूरी तरह से Automatically होती है, और यदि हम हमारे Local Computer System पर Python Program Develop कर रहे हों, तो जब हम हमारे Program को Execute करते हैं, तो हमारे Local Computer System पर .pyc Extension से एक File भी Create होती है, जो कि हमारे Program की Compiled Python Program की Byte Code File होती है और इस File को Python Interpreter सामान्यत: Current Source Program Files की Directory के अन्दर __pycache__ नाम की एक Sub-Directory में Save करता है।
जब हम Current Python Source Program में किसी अन्य Python Program को Import करते हैं, तब Import होने वाली Python File केवल पहली बार ही Compile होती है और उसकी Compiled Byte Code की .pyc File __pycache__ Directory में Save हो जाती है।
उदाहरण के लिए यदि हम निम्नानुसार ImportMe.py नाम की एक File Create करें-
[code] # FileName: ImportMe.py print("I am imported") [/code]
और इस File को निम्नानुसार NewFileIDLE.py में Import करें-
[code] # FileName: NewFileIDLE.py import ImportMe print("Hello Python") [/code]
तो अब जब हम NewFileIDLE.py File को Python Interpreter द्वारा Interpret करेंगे, तो Current Directory में __pycache__ नाम की एक Directory Create होगी और उस Directory में filename.pythontype-version.cpy Format में एक नई Compiled Byte Code File Create हो जाती है।
चूंकि हमारी File का नाम ImportMe.py है और हम CPython का 3.6 Version Use कर रहे हैं, इसलिए हमारे लिए Create होने वाली File Compiled Byte Code File का नाम ImportMe.cpython-36.pyc होगा, जिसे आप निम्न चित्रानुसार अपने Program File की Current Source Directory में देख सकते हैं-
__pycache__ Directory का मुख्य मकसद ये है कि यदि एक ही Computer System पर एक से ज्यादा Python Version Installed हों, तो जिस Python Version का प्रयोग करते हुए किसी Python Script को Compile किया गया है, उसकी Byte Code File उसी Version के __pycache__ Directory में Exist रहे और किसी दूसरे Version की Byte Code File को Overwrite करते हुए किसी अन्य Version को Disturb न करे।
जब हम किसी Python Program को पहली बार Execute करते हैं, तो उसकी एक .pyc Compiled Byte Code Executable File __pycache__ Directory में Save हो जाती है। परिणामस्वरूप जब उसी Python Program File को बिना कोई Change किए हुए दोबारा Execute करते हैं, तो इस दूसरी बार वह Python Source Code File फिर से Compile नहीं होती बल्कि __pycache__ Directory में पहले से Exist .pyc Compiled Byte Code Executable File ही Run हो जाती है, जिसके परिणामस्वरूप Python Program की Execution Speed व Performance काफी बढ़ जाती है।
हालांकि यदि Source Code File में एक Single Character का भी Change कर दिया गया हो, तो Python Interpreter उस Source Code File को फिर से Compile करके उसकी Byte Code File Generate करता है और उसकी .pyc Compiled File को __pycache__ Directory में Overwrite कर देता है।
इसी तरह से यदि हम किसी Python Source Code को Import करते हैं और यदि Current Source Program व Imported Source Program के Python Version में अन्तर हो, तो Imported Source Python Program, Current Python Version के लिए फिर से Recompile होता है। लेकिन यदि Imported Python Script का Version Current Program File के Version के समान ही हो, तो Current Python Program, __pycache__ से Imported Python Program की .pyc Compiled File को ही Reuse कर लेता है और उसे फिर से Recompile नहीं करता। परिणामस्वरूप Current Python Program की Speed व Performance Improve हो जाता है।
यहां ध्यान देने वाली बात ये है कि यदि Python Interpreter, .pyc File को Local Computer पर Save नहीं कर पाता, तब भी Python Program Execute होता है लेकिन कोई __pycache__ Directory Create नहीं होता, जिसमें Compiled .pyc File को Save किया जा सके। परिणामस्वरूप Created .pyc File Memory में ही Create होता है और Execution के बाद Destroy हो जाता है। जिसकी वजह से हमारे Program की Performance व Execution Speed प्रभावित होती है क्योंकि इस स्थिति में हर Python Source File को Python Interpreter द्वारा प्रत्येक Execution पर बार-बार Source Code से Compiled Byte Code में Translate करना पड़ता है।
Compiled Python Byte Code Files हमारे Python Program को Deploy करने का भी एक बेहतर तरीका है जहां हम हमारे Customer को अपना Python Source Code Deploy नहीं करते बल्कि __pycache__ Directory में Exist Executable Compiled Byte Code Files को ही Deploy करते हैं, जिसकी वजह से हमारा Client कभी भी हमारे Source Code में किसी तरह का परिवर्तन नहीं कर सकता और हमारा Code हमारी Intellectual Property के रूप में सुरक्षित रहता है।
एक ध्यान रखने वाली महत्वपूर्ण बात ये है कि हम Command Prompt या IDLE के माध्यम से Python Sell में जो Python Codes लिखते हैं, वे Codes __pycache__ Directory में Save नहीं होते बल्कि केवल उन्हीं Python Codes की .pyc File Create होती है, जिनकी Actual .py File Exist होती है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Python in Hindi | Page: 602 | Format: PDF