سی پایتون

دانشنامه عمومی

سی پایتون ( به انگلیسی: CPython ) رویهٔ پیش فرض و پر کاربردترین رویه در زبان برنامه نویسی پایتون است که به زبان سی ( زبان برنامه نویسی ) نوشته شده است.
سی پایتون مفسر کدهای پایتون است.
سی پایتون کد پایتون را قبل از تفسیر کردن آن، به بایت کد کامپایل می کند و از این رو می تواند هم به عنوان مفسر و هم کامپایلر ( همگردان ) ، تعریف شود. سی پایتون یک رابط عملکرد خارجی ( foreign function interface ) ، با چند زبان از جمله زبان سی دارد که در آن باید صریحاً قیدها را در زبانی غیر از پایتون نوشت.
ویژگی خاص سی پایتون این است که از قفل مفسر سراسری ( به اختصار GIL ) ، در هر فرایند مفسر سی پایتون بهره می برد که به این معناست که در ظرف یک فرایند هربار فقط یک ریسه ( زیربرنامه ) می تواند بایت کد پایتون را پردازش کند.
این به این معنا نیست که چند ریسمانی فایده ای ندارد. متداول ترین سناریوی چند ریسمانی وقتی است که ریسه ها بیشتر منتظر تکمیل شدن فرایند خارجی هستند.
برای مثال تصور کنید که 3 ریسه در حال سرویس دهی به مشتری های جداگانه هستند. یک ریسه ممکن است منتظر پاسخ مشتری و دیگری منتظر اجرا شدن جستار پایگاه داده ها باشد در حالی که سومی عملاً در حال پردازش کد پایتون است.
با این حال، وجود GIL به این معناست که سی پایتون برای پردازش هایی که الگوریتم های فشرده CPU را در کد پایتون پیاده سازی می کنند و به طور بالقوه می توانند در چندین هسته توزیع شوند، مناسب نیست.
در برنامه های دنیای واقعی، شرایطی که GIL یک تنگنای ( bottleneck ) قابل توجه است، کاملاً نادر است. این به این دلیل است که پایتون ذاتاً زبان کندی است و عموماً برای CPU متمرکز یا عملیات حساس به زمان، استفاده نمی شود. پایتون معمولاً در سطح بالا و برای خواندن توابع در کتابخانه ها برای انجام کارهای تخصصی استفاده می شود. این کتابخانه ها عموماً به زبان پایتون نوشته نشده اند و کد پایتون در ریسه ی دیگری می تواند درحالی اجرا شود که یک فراخوانی به یکی از این پردازش های اساسی انجام شود.
فراخواندن کتابخانه ی غیرپایتونی برای اجرای الگوریتم های فشرده CPU، تحت تسلط GIL نیست و ممکن است به طور همزمان ریسه های زیادی را در چند پردازنده بدون محدودیت اجرا کند.
همزمانی کد پایتون فقط می تواند با چند فرایند جداگانه ی مفسر سی پایتون، تحت مدیریت یک سیستم چندکارگی، به دست آید. این قضیه، ارتباط بین فرایندهای همزمان پایتون را پیچیده می کند، اگرچه ماژول چندپردازشی تاحدی آن را کاهش می دهد. این به این معناست که برنامه هایی که از اجرای همزمان کد پایتون بهره می برند، می توانند با هزینه کمی اجرا شوند.
عکس سی پایتون
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلف

پیشنهاد کاربران