از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
تفاوت بین فایلهای پایتون .pyc، .pyd و .pyo
سرفصلهای مطلب
در این مقاله به بررسی انواع فایل های پایتون می پردازیم .pyc
، .pyo
و .pyd
و روش استفاده از آنها برای ذخیره بایت کدی که توسط سایر برنامه های پایتون وارد می شود.
شاید باهاش کار کردی .py
فایل هایی که کد پایتون را می نویسند، اما می خواهید بدانید که این انواع فایل های دیگر چه کار می کنند و کجا استفاده می شوند. برای درک این موارد، ما به روش تبدیل کدهای پایتون به دستورالعمل هایی که ماشین می تواند مستقیماً اجرا کند، نگاه خواهیم کرد.
بایت کد و ماشین مجازی پایتون
پایتون با یک مفسر ارسال می شود که می تواند به عنوان REPL (خواندن-ارزیابی-printحلقه)، به صورت تعاملی، روی خط فرمان یا می توانید پایتون را با اسکریپت های کد پایتون فراخوانی کنید. در هر دو مورد، مفسر ورودی شما را تجزیه می کند و سپس آن را کامپایل می کند بایت کد (دستورالعمل های ماشین سطح پایین) که سپس توسط “نمایش پایتونیک” کامپیوتر اجرا می شود. این نمایش پایتونیک را می نامند ماشین مجازی پایتون.
با این حال، به اندازه کافی با ماشین های مجازی دیگر مانند ماشین مجازی جاوا یا ماشین مجازی Erlang تفاوت دارد که شایسته مطالعه خود است. ماشین مجازی به نوبه خود با سیستم عامل و سخت افزار واقعی برای اجرای دستورالعمل های ماشین بومی ارتباط برقرار می کند.
نکته مهمی که هنگام دیدن باید به خاطر بسپارید .pyc
، .pyo
و .pyd
انواع فایل، این است که اینها فایل هایی هستند که توسط مفسر پایتون زمانی که کد را به بایت کد کامپایل شده تبدیل می کند، ایجاد می شوند. کامپایل منبع پایتون به بایت کد یک مرحله میانی ضروری در این است process ترجمه دستورالعمل ها از کد منبع به زبان قابل خواندن توسط انسان به دستورالعمل های ماشینی که سیستم عامل شما می تواند اجرا کند.
در طول این مقاله ما به هر نوع فایل به صورت مجزا نگاهی می اندازیم، اما ابتدا یک پس زمینه سریع ارائه خواهیم کرد. روی ماشین مجازی پایتون و بایت کد پایتون.
را .pyc
نوع فایل
ما ابتدا در نظر می گیریم .pyc
نوع فایل. فایل های نوع .pyc
هنگامی که شما به طور خودکار توسط مترجم تولید می شوند import یک ماژول، که سرعت واردات آینده آن ماژول را افزایش می دهد. بنابراین این فایل ها فقط از a ایجاد می شوند .py
اگر توسط دیگری وارد شده باشد .py
فایل یا ماژول
در اینجا نمونه ای از ماژول پایتون است که می خواهیم import. این ماژول فاکتوریل ها را محاسبه می کند.
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
def main():
print("I am the factorial helper")
print("you can call factorial(number) where number is any integer")
print("for example, calling factorial(5) gives the result:")
print(factorial(5))
if __name__ == '__main__':
main()
اکنون، هنگامی که فقط این ماژول را از خط فرمان اجرا می کنید، با استفاده از python math_helpers.py
، نه .pyc
فایل ها ایجاد می شوند
حالا بیایید import این در یک ماژول دیگر، همانطور که در زیر نشان داده شده است. ما در حال واردات هستیم فاکتوریل تابع از کمک های ریاضی.py فایل و استفاده از آن برای محاسبه فاکتوریل 6.
from math_helpers import factorial
def main():
print("Python can compute things easily from the REPL")
print("for example, just write : 4 * 5")
print("and you get: 20.")
print("Computing things is easier when you use helpers")
print("Here we use the factorial helper to find the factorial of 6")
print(factorial(6))
if __name__ == '__main__':
main()
ما می توانیم این اسکریپت را با فراخوانی اجرا کنیم python computations.py
در terminal. نه تنها نتیجه فاکتوریل 6 یعنی 720 را می گیریم، بلکه متوجه می شویم که مفسر به طور خودکار یک عدد ایجاد می کند. math\_helpers.pyc
فایل. این اتفاق می افتد زیرا محاسبات ماژول را وارد می کند math\_helpers
مدول. برای سرعت بخشیدن به بارگذاری ماژول وارد شده در آینده، مفسر یک فایل بایت کد از ماژول ایجاد می کند.
هنگامی که فایل کد منبع به روز می شود، .pyc
فایل هم آپدیت میشه هر زمان که زمان به روز رسانی کد منبع با فایل بایت کد متفاوت باشد این اتفاق می افتد و اطمینان حاصل می کند که بایت کد به روز است.
توجه داشته باشید که با استفاده از .pyc
فایل ها فقط بارگذاری برنامه شما را سرعت می بخشد، نه اجرای واقعی آن. این بدان معناست که شما می توانید با نوشتن برنامه اصلی خود در یک ماژول که توسط ماژول کوچکتر دیگری وارد می شود، زمان راه اندازی را بهبود بخشید. با این حال، برای به دست آوردن بهبود عملکرد به طور کلی تر، باید به تکنیک هایی مانند بهینه سازی الگوریتم و تجزیه و تحلیل الگوریتمی توجه کنید.
زیرا .pyc
فایلها مستقل از پلتفرم هستند، میتوان آنها را در ماشینهایی با معماریهای مختلف به اشتراک گذاشت. با این حال، اگر توسعه دهندگان زمان های ساعت متفاوتی داشته باشند روی سیستم های آنها را بررسی می کند .pyc
فایلهای موجود در کنترل منبع میتوانند مُهرهای زمانی ایجاد کنند که بهطور مؤثر در آینده برای خوانشهای زمان دیگران باشد. به این ترتیب، به روز رسانی کد منبع دیگر باعث ایجاد تغییرات در بایت کد نمی شود. این می تواند یک اشکال بد برای کشف باشد. بهترین راه برای جلوگیری از آن اضافه کردن است .pyc
فایل ها به لیست نادیده گرفته شده در سیستم کنترل نسخه شما.
را .pyo
نوع فایل
را .pyo
نوع فایل نیز توسط مفسر ایجاد می شود که a مدول وارداتی است. با این حال .pyo
زمانی که تنظیمات بهینهسازی فعال است، فایل از اجرای مفسر نتیجه میگیرد.
هنگامی که مفسر پایتون را فراخوانی می کنیم، بهینه ساز با افزودن پرچم “-O” فعال می شود. در اینجا یک مثال کد برای نشان دادن استفاده از بهینه سازی آورده شده است. اول، ما یک ماژول داریم که لامبدا را تعریف می کند. در پایتون، لامبدا درست مانند یک تابع است، اما به طور خلاصه تر تعریف می شود.
g = lambda x: x * 2
اگر از مثال قبلی به خاطر داشته باشید، نیاز داریم import این ماژول برای استفاده از آن. در لیست کد زیر، ما import lambdas.py
و از g
لامبدا
import lambdas
def main():
print(lambdas.g(7))
if __name__ == '__main__':
main()
حال به بخش مهم این مثال می رسیم. به جای فراخوانی عادی پایتون مانند مثال آخر، در اینجا از بهینه سازی استفاده می کنیم. فعال بودن بهینه ساز فایل های بایت کد کوچکتری را نسبت به زمانی که از بهینه ساز استفاده نمی کنید ایجاد می کند.
برای اجرای این مثال با استفاده از بهینه ساز، دستور را فراخوانی کنید:
$ python -O using_lambdas.py
نه تنها نتیجه صحیح دو برابر کردن 7 یعنی 14 را به عنوان خروجی در خط فرمان می گیریم، بلکه می بینیم که یک فایل بایت کد جدید به طور خودکار برای ما ایجاد می شود. این فایل مبتنی است روی واردات از lambdas.py
در فراخوانی از using_lambdas.py
. از آنجا که ما بهینه ساز را فعال کرده بودیم، a .pyo
فایل بایت کد ایجاد می شود. در این صورت نامگذاری شده است lambdas.pyo
.
بهینه ساز، که کار زیادی انجام نمی دهد، عبارات اظهارنظر را از بایت کد شما حذف می کند. نتیجه در اکثر موارد قابل توجه نخواهد بود، اما ممکن است در مواقعی به آن نیاز داشته باشید.
همچنین توجه داشته باشید که، از آنجایی که a .pyo
فایل بایت کد ایجاد می شود و جایگزین آن می شود .pyc
فایلی که بدون بهینه سازی ایجاد می شد. هنگامی که فایل کد منبع به روز می شود، .pyo
هر زمان که زمان به روز رسانی کد منبع با زمان فایل بایت کد متفاوت باشد، فایل به روز می شود.
را .pyd
نوع فایل
را .pyd
نوع فایل، بر خلاف دو مورد قبلی، برای سیستم عامل های کلاس ویندوز مخصوص پلتفرم است. بنابراین ممکن است به طور معمول با آن مواجه شوید روی نسخه های شخصی و سازمانی ویندوز 10، 8، 7 و دیگران.
در اکوسیستم ویندوز، الف .pyd
فایل یک فایل کتابخانه ای حاوی کد پایتون است که می تواند توسط سایر برنامه های پایتون فراخوانی شده و مورد استفاده قرار گیرد. به منظور در دسترس قرار دادن این کتابخانه برای سایر برنامه های پایتون، به عنوان یک کتابخانه پیوند پویا بسته بندی شده است.
کتابخانه های پیوند پویا (DLL) کتابخانه های کد ویندوز هستند که به برنامه های فراخوانی مرتبط هستند در زمان اجرا. مزیت اصلی پیوند دادن به کتابخانه ها در زمان اجرا مانند DLL ها این است که استفاده مجدد از کد، معماری های مدولار و راه اندازی سریعتر برنامه را تسهیل می کند. در نتیجه، DLL ها عملکردهای زیادی را در سراسر سیستم عامل ویندوز ارائه می دهند.
آ .pyd
فایل یک کتابخانه پیوند پویا است که شامل یک ماژول پایتون یا مجموعهای از ماژولها است که باید توسط سایر کدهای پایتون فراخوانی شوند. برای ایجاد یک .pyd
فایل، شما باید یک ماژول به نام ایجاد کنید، به عنوان مثال، example.pyd
. در این ماژول باید تابعی به نام ایجاد کنید PyInit_example()
. هنگامی که برنامه ها با این کتابخانه تماس می گیرند، نیاز به فراخوانی دارند import foo
، و PyInit_example()
تابع اجرا خواهد شد.
برای اطلاعات بیشتر روی پایتون خود را بسازید .pyd
فایل ها را بررسی کنید این مقاله.
تفاوت بین این انواع فایل
در حالی که شباهت هایی بین این انواع فایل وجود دارد، تفاوت های بزرگی نیز وجود دارد. به عنوان مثال، در حالی که .pyc
و .pyo
فایلها از این نظر شبیه هستند که حاوی بایت کد پایتون هستند، تفاوت آنها در این است .pyo
فایل ها به لطف بهینه سازی های انجام شده توسط مفسر فشرده تر هستند.
نوع سوم فایل، the .pyd
، با دو مورد قبلی متفاوت است زیرا یک کتابخانه با پیوند پویا برای استفاده است روی سیستم عامل ویندوز از دو نوع فایل دیگر می توان استفاده کرد روی هر سیستم عامل، نه فقط ویندوز.
با این حال، هر یک از این انواع فایل شامل کدهایی است که توسط سایر برنامه های پایتون فراخوانی و استفاده می شود.
نتیجه
در این مقاله توضیح دادیم که چگونه هر نوع فایل خاص، .pyc
، .pyo
، و .pyd
، توسط ماشین مجازی پایتون برای استفاده مجدد از کد استفاده می شود. همانطور که دیدیم هر فایل اهداف و موارد استفاده خاص خود را دارد، خواه برای سرعت بخشیدن به بارگذاری ماژول، سرعت بخشیدن به اجرا یا تسهیل استفاده مجدد از کد باشد. روی سیستم عامل های خاص
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-30 03:16:04