സ്റ്റാക്ക്ലസ് പൈത്തൺ

Stackless Python
Original author(s)Christian Tismer
വികസിപ്പിച്ചത്Anselm Kruis
ആദ്യപതിപ്പ്1998; 26 വർഷങ്ങൾ മുമ്പ് (1998)
Stable release
3.5.4-slp, 3.4.7-slp, 3.3.7-slp, 2.7.14-slp / സെപ്റ്റംബർ 29, 2017; 7 വർഷങ്ങൾക്ക് മുമ്പ് (2017-09-29)
റെപോസിറ്ററി വിക്കിഡാറ്റയിൽ തിരുത്തുക
ഭാഷC, Python
ഓപ്പറേറ്റിങ് സിസ്റ്റംലിനക്സ്, മാക് ഒഎസ്, Windows
തരംInterpreter
അനുമതിപത്രംപൈത്തൺ സോഫ്റ്റ് വെയർ ഫൗണ്ടേഷൻ ലൈസെൻസ്
വെബ്‌സൈറ്റ്github.com/stackless-dev/stackless/wiki

സ്റ്റാക്ക്ലെസ്സ് പൈത്തൺ, അല്ലെങ്കിൽ സ്റ്റാക്ക്ലെസ്സ്, ഒരു പൈത്തൺ പ്രോഗ്രാമിങ് ഭാഷ ഇൻറർപ്രെട്ടർ ആണ്, അങ്ങനെയുള്ള പേര് വന്നതിന് കാരണം, സ്വന്തം സ്റ്റാക്കിനായി സി കോൾ സ്റ്റാക്ക് അനുസരിച്ച് ഇത് ഒഴിവാക്കുന്നു. സ്റ്റാക്കിലിലെ ഏറ്റവും സുപ്രധാന സവിശേഷതയാണ് മൈക്രോട്രെഡ്സ്, ഇത് സാധാരണ ഓപ്പറേറ്റിങ് സിസ്റ്റം ത്രെഡുകളുമായി ബന്ധപ്പെട്ട ഓവർഹെഡിൽ നിന്നും ഒഴിവാക്കുന്നു. പൈത്തൺ ഫീച്ചറുകൾക്ക് പുറമേ, കൊറായ്ൻറിനസ് (coroutines), ആശയവിനിമയ ചാനലുകൾ, ടാസ്ക് സീരിയലൈസേഷൻ എന്നിവയ്ക്കായി സ്റ്റാക്ക്ലെസ്സ് പിന്തുണ നൽകുന്നു.

രൂപകല്പന

[തിരുത്തുക]

സ്റ്റാക്ക്ലസ് പൈത്തണിനൊപ്പം, ഒരു പ്രോഗ്രാമിംഗ് ഭാഷ ഇൻറർപ്രെട്ടർ തന്നെ നിയന്ത്രിക്കുന്ന മൈക്രോ റീഡുകളായി വേർതിരിച്ചിരിക്കുന്നു, ഓപ്പറേറ്റിങ്‌ സിസ്റ്റം കേർണൽ-കോൺടെക്സ്റ്റ് സ്വിച്ചിങ്, ടാസ്ക് ഷെഡ്യൂളിംഗ് എന്നിവയല്ല ഇൻറർപ്രെട്ടറിൽ പൂർണ്ണമായും ചെയ്യുന്നത് (ഇവയെ ഗ്രീൻ ത്രെഡ് ഒരു രൂപമായി കണക്കാക്കുന്നു). മൈക്രോത്രെഡ്സ് ഒരേ സിപിയു കോറിലെ ഒരു പ്രോഗ്രാമിൽ വിവിധ ഉപടാസ്കുകളുടെ എക്സിക്യൂഷൻ കൈകാര്യം ചെയ്യുന്നു. ഇപ്രകാരം, വിഷയാധിഷ്ഠിത അസിൻക്രണസ് പ്രോഗ്രാമിന് ബദലാണ് കൂടാതെ ഒറ്റ കോർ പ്രോഗ്രാമുകൾക്ക് പ്രത്യേക ത്രെഡുകൾ ഉപയോഗിക്കുന്നതിനെ തടയുകയും ചെയ്യുന്നു(കാരണം, യൂസർ മോഡിനും കേർണൽ മോഡിനും ഇടയിൽ മോഡ് മാറുന്നതിനാൽ സിപിയു ഉപയോഗം കുറയ്ക്കാം).

ഒരു കോർ ഉപയോഗിച്ച് പ്രവർത്തിപ്പിക്കുന്ന സബ്ടാസ്ക് കൈകാര്യം ചെയ്യുന്നത് എളുപ്പമാണ്. പൈത്തൺ ഗ്ലോബൽ ഇൻറർപ്രെട്ടർ ലോക്ക് സ്റ്റാക്ക്ലെസ്സ് പൈത്തൺ നീക്കം ചെയ്യുന്നില്ല, ഒന്നിലധികം ത്രെഡുകളോ കൂടാതെ അല്ലെങ്കിൽ പ്രക്രിയകളോ ഇത് ഉപയോഗിക്കുന്നില്ല. അതിനാൽ ഇത് പങ്കാളിത്ത സി.പി.യുവിൽ സഹകരണപരമായ മൾട്ടിടാസ്കിങ് മാത്രമേ അനുവദിച്ചിട്ടുള്ളു, സമാന്തരത്വമല്ല (പ്രീഎംഷൻ യഥാർത്ഥത്തിൽ ലഭ്യമല്ലെങ്കിലും ഇപ്പോൾ ചില രൂപങ്ങളിൽ ആണ്[1]).ഒന്നിലധികം സിപിയു കോറുകൾ ഉപയോഗിക്കുന്നതിനായി, സ്റ്റാക്ക്ലെസ്സ് പൈത്തൺ പ്രക്രിയകളിൽ മുകളിൽ ഒരു ഇൻറർപ്രോസ്സസ്സ് ആശയവിനിമയം സ്ഥാപിക്കേണ്ടിവരും.

ഉറവിടത്തിലുള്ള (source) മാറ്റങ്ങളുടെ ഗണ്യമായ എണ്ണം കാരണം ഒരു പൈത്തൺ ഇൻസ്റ്റാളറിൽ എക്സ്റ്റെഷനിലോ ലൈബ്രറിയിലോ ഉള്ള സ്റ്റാക്ക്ലെസ് പൈത്തൺ ഇൻസ്റ്റാൾ ചെയ്യാൻ സാധ്യമല്ല. പകരം ഒരു പൂർണ്ണ പൈത്തൺ വിതരണമാണ് അത്. ഒരു സ്വയം ഹോസ്റ്റിങ് പൈത്തൺ ഇൻറർപ്രെറ്റർ, ജെഐറ്റി കംപൈലർ എന്നിവയിലും സ്റ്റാക്ക്ലെസ്സിൻറെ ഭൂരിഭാഗം സവിശേഷതകളും പൈപൈയിലും നടപ്പിലാക്കിയിട്ടുണ്ട്.[2]

ഉപയോഗം

[തിരുത്തുക]

മുഴുവൻ സ്റ്റാക്ക്ലെസ്സ് ഒരു പ്രത്യേക വിതരണമാണെങ്കിലും, ഇതിൻറെ സ്വിച്ച് ഫംഗ്ഷണാലിറ്റി ഒരു സിപൈത്തൺ എക്സ്റ്റൻഷൻ ഗ്രീൻലെറ്റ് എന്ന പേരുള്ള വിജയകരമായ പാക്കേജാണ്.[3] ഇത് പല ലൈബ്രറികളും ഉപയോഗിക്കുന്നു (ഉദാ: ജിഇവൻറ്(gevent)[4])സിപൈത്തണിനായി ഒരു "ഗ്രീൻ ത്രെഡിംഗ്" പരിഹാരം നൽകുന്നതിനുവേണ്ടിയാണിത്. പൈത്തൺ ഗ്രീൻ ത്രെഡുകൾക്ക് ഒരു നേറ്റീവ് പരിഹാരം ലഭിച്ചിരിക്കുന്നു: എവേയിറ്റ്(await) / എസിങ്ക്(async).

ഈവ് ഓൺലൈനിൽ വിപുലമായ മൾട്ടിപ്ലേയർ ഓൺലൈൻ ഗെയിം, അതുപോലെ തന്നെ അയൺപോർട്ടിൻറെ(IronPort) മെയിൽ പ്ലാറ്റ്ഫോമിലും സ്റ്റാക്കുകൾ ഉപയോഗിക്കാം.

അവലംബം

[തിരുത്തുക]
  1. "About Stackless". Archived from the original on 2020-06-23. Retrieved 26 August 2016. a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively.
  2. "Application-level Stackless features — PyPy documentation". pypy.readthedocs.org.
  3. "greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation". greenlet.readthedocs.org.
  4. "What is gevent? — gevent 1.3.0.dev0 documentation". www.gevent.org.