পাইথনের বেশ কয়েকটি বাস্তবায়ন রয়েছে, উদাহরণস্বরূপ, সিপিথন, আয়রন পাইথন, আরপিথন ইত্যাদি
কারও কারও জিআইএল আছে, কারও কাছে নেই। উদাহরণস্বরূপ, সিপথনের জিআইএল রয়েছে:
Http://en.wikedia.org/wiki/Global_Interpreter_Lock থেকে
জিআইএল সহ প্রোগ্রামিং ভাষায় রচিত অ্যাপ্লিকেশনগুলি সম্পূর্ণ সমান্তরালতা অর্জনের জন্য পৃথক প্রক্রিয়াগুলি ব্যবহার করার জন্য ডিজাইন করা যেতে পারে, কারণ প্রতিটি প্রক্রিয়াটির নিজস্ব দোভাষী রয়েছে এবং ঘুরেফিরে তার নিজস্ব জিআইএল রয়েছে।
জিআইএল এর সুবিধা
- একক থ্রেডেড প্রোগ্রামগুলির গতি বৃদ্ধি পেয়েছে।
- সি লাইব্রেরির সহজ সংহতকরণ যা সাধারণত থ্রেড-নিরাপদ থাকে না।
পাইথন (সিপিথন এবং অন্যান্য) কেন জিআইএল ব্যবহার করে
সিপিথনে, গ্লোবাল ইন্টারপ্রেটার লক বা জিআইএল হ'ল এমন একটি মিউটেক্স যা একাধিক নেটিভ থ্রেড একবারে পাইথন বাইকোডগুলি কার্যকর করতে বাধা দেয়। এই লকটি প্রয়োজনীয় কারণ মূলত সিপিথনের মেমরি পরিচালনা থ্রেড-নিরাপদ নয়।
জিআইএল বিতর্কিত কারণ এটি মাল্টিথ্রেডেড সিপিথন প্রোগ্রামগুলিকে নির্দিষ্ট পরিস্থিতিতে মাল্টিপ্রসেসর সিস্টেমগুলির পুরো সুবিধা নিতে বাধা দেয়। নোট করুন যে সম্ভাব্যভাবে ব্লক করা বা দীর্ঘ-চলমান ক্রিয়াকলাপগুলি, যেমন I / O, চিত্র প্রক্রিয়াজাতকরণ, এবং NumPy নম্বর ক্রাঞ্চিং, জিআইএল এর বাইরে ঘটে। সুতরাং এটি কেবল বহুগঠিত প্রোগ্রামগুলিতেই জিআইএল-এর ভিতরে প্রচুর সময় ব্যয় করে সিপিথন বাইটকোডকে ব্যাখ্যা করে, জিআইএল একটি বাধা হয়ে দাঁড়ায়।
পাইথনের একটি জিআইএল রয়েছে বেশ কয়েকটি কারণে জরিমানাযুক্ত লক করার বিপরীতে:
এটি একক থ্রেডেড ক্ষেত্রে দ্রুত হয়।
আই / ও বাউন্ড প্রোগ্রামগুলির জন্য এটি বহু-থ্রেডযুক্ত ক্ষেত্রে দ্রুত is
সিপিইউ-বাউন্ড প্রোগ্রামগুলির জন্য মাল্টি-থ্রেডড ক্ষেত্রে এটি দ্রুততর হয় যা সি লাইব্রেরিতে তাদের সংখ্যার নিবিড় কাজ করে।
এটি সি এক্সটেনশানগুলি লিখতে আরও সহজ করে তোলে: পাইথন থ্রেডগুলির কোনও স্যুইচ থাকবে না যেখানে আপনি এটি হওয়ার অনুমতি দিচ্ছেন (অর্থাত্ পাই_বিএসএলএলএলও_ THREADS এবং পাই_ END_ALLOW_THREADS ম্যাক্রোর মধ্যে)।
এটি সি লাইব্রেরি মোড়ানো সহজ করে তোলে। থ্রেড-সুরক্ষা সম্পর্কে আপনাকে চিন্তা করতে হবে না। লাইব্রেরি যদি থ্রেড-নিরাপদ না থাকে, আপনি জিআইএলকে কল করার সময় লক করে রাখেন।
জিআইএল সি এক্সটেনশনের মাধ্যমে মুক্তি পেতে পারে। পাইথনের স্ট্যান্ডার্ড লাইব্রেরি প্রতিটি ব্লক করা আই / ও কলকে ঘিরে জিআইএল প্রকাশ করে। এইভাবে জিআইএল এর আই / ও বাউন্ড সার্ভারগুলির কার্য সম্পাদনের কোনও ফল নেই। আপনি এইভাবে প্রসেস (কাঁটাচামচ), থ্রেড বা অ্যাসিঙ্ক্রোনাস আই / ও ব্যবহার করে পাইথনে নেটওয়ার্কিং সার্ভার তৈরি করতে পারেন এবং জিআইএল আপনার পথে পাবে না।
সি বা ফোর্টরানের সংখ্যাসূচক গ্রন্থাগারগুলিকে একইভাবে প্রকাশিত জিআইএল-এর সাথে কল করা যেতে পারে। আপনার সি এক্সটেনশানটি এফএফটি শেষ হওয়ার অপেক্ষায় রয়েছে, দোভাষী অন্য পাইথন থ্রেড সম্পাদন করবেন exec একটি জিআইএল এই ক্ষেত্রে এছাড়াও সূক্ষ্ম-দানাদার লকিংয়ের চেয়ে সহজ এবং দ্রুত। এটি সংখ্যাগরিষ্ঠ কাজের সর্বাধিক গঠন করে। NumPy এক্সটেনশন যখনই সম্ভব জিআইএলকে প্রকাশ করে।
বেশিরভাগ সার্ভার প্রোগ্রাম লেখার জন্য থ্রেডগুলি একটি খারাপ উপায়। যদি লোড কম হয়, কাঁটাচামচ করা সহজ। যদি লোড বেশি হয়, অ্যাসিনক্রোনাস আই / ও এবং ইভেন্ট-চালিত প্রোগ্রামিং (যেমন পাইথনের টুইস্টেড ফ্রেমওয়ার্ক ব্যবহার করা) ভাল। থ্রেডগুলি ব্যবহারের একমাত্র অজুহাত হ'ল উইন্ডোজে os.fork এর অভাব।
জিআইএল একটি সমস্যা যদি এবং কেবলমাত্র, আপনি খাঁটি পাইথনে সিপিইউ-নিবিড় কাজ করে থাকেন। এখানে আপনি প্রক্রিয়া এবং বার্তা-পাসিং (যেমন mpi4py) ব্যবহার করে ক্লিনার ডিজাইন পেতে পারেন। পাইথন পনিরের দোকানে একটি 'প্রসেসিং' মডিউলও রয়েছে, যা প্রসেসগুলিকে থ্রেডের মতো একই ইন্টারফেস দেয় (যেমন থ্রেডিং প্রতিস্থাপন করুন processing প্রসেসিংয়ের সাথে থ্রেড roপ্রসেস)।
থ্রেডগুলি জিআইএল নির্বিশেষে কোনও জিইউআইয়ের প্রতিক্রিয়া বজায় রাখতে ব্যবহার করা যেতে পারে। জিআইএল যদি আপনার পারফরম্যান্সকে বাধা দেয় (উপরের আলোচনাটি সিএফ।), আপনি আপনার থ্রেডটিকে একটি প্রক্রিয়া করতে পারেন এবং এটি শেষ হওয়ার জন্য অপেক্ষা করতে পারেন।