وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

تفاوت بین فایل‌های پایتون .pyc، .pyd و .pyo

0 11
زمان لازم برای مطالعه: 6 دقیقه


در این مقاله به بررسی انواع فایل های پایتون می پردازیم .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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید