این آموزش سایتون برای برنامه نویسان مبتدی تا پیشرفته زبان برنامه نویسی پایتون در 7 جلسه طراحی شده است. هدف اصلی در این آموزش پروژه محور سایتون فراگیری نحوه افزایش سرعت اجرای پایتون با کتاخانه Cython میباشد. این که عمیق درک کنید توانایی سایتون چیست. در طول این آموزش ابتدا کدنویسی سایتون در ژوپیتر (گوگل کولب) را میآموزید که مناسب علم داده و هوش مصنوعی است. سپس با استفاده از سایتون در پایچارم برای برنامهنویسی حرفهای آشنا میشوید.
cython چیست ؟
سایتون یک زبان برنامهنویسی برای توسعه ماژول برای زبان برنامه نویسی پایتون میباشد. با استفاده از سایتون ما میتوانیم سرعت اجرای برنامههای پایتون خود را افزایش دهیم. به عبارتی دیگر با استفاده از سایتون میتوانیم خیلی سریعتر به جواب نهایی برنامه پایتون خود برسیم. سایتون در واقع یک فوق مجموعه برای زبان پایتون است که به C کامپایل شده و باعث افزایش عملکرد و سرعت برنامه های نوشته شده به زبان پایتون میشود.
برای کارهایی که به انواع اشیاء بومی و داخلی پایتون محدود هستند، افزایش سرعت زیاد نخواهد بود اما برای عملیات های عددی و محاسباتی، افزایش سرعت چشمگیر خواهد بود.
با استفاده از سایتون، شما می توانید بسیاری از محدودیتهای داخلی پایتون را دور زده و یا کاملا از آنها عبور کنید. بدون اینکه سادگی و راحتی زبان پایتون را از دست بدهید.
افزایش سرعت پایتون با سایتون
پایتون زبان بسیار محبوبی است. سرعت اجرای پایتون نسبت به زبانهای برنامه نویسی مانند c یا ++c بسیار پایین است. دلیل این امر هم بخاطر ساختار اجرای کدهای پایتون است که به صورت مفسری (Interpreted Language) میباشد. در مقابل زبان سی کامپایلری (Compiled Language) است. کدهای سی مستقیم به کد ماشین تبدیل میشوند اما کدهای پایتون نخست به کد میانی و سپس کد ماشین تبدیل میشوند.
حالا میتوانید حدس بزنید که سایتون چیست. با استفاده از Cython میتوانید با پایتون به سرعت اجرای سی نزدیک شوید.
در این دوره با استفاده از پکیج سایتون و آموزش نحوه کارکرد آن سعی میکنیم سرعت اجرای کدهای پایتون خود را در مثال های عملی افزایش دهیم. در این دوره بدون اینکه دانش زبان برنامه نویسی c را داشته باشیم از سرعت اجرای بالای این زبان استفاده میکنیم.
برای آشنایی سریع با 7 روش افزایش سرعت پایتون که سایتون نیز از جمله آنهاست، مقاله زیر را بخوانید:
7 روش آسان برای افزایش سرعت اجرای پایتون (+)
این آموزش در یک نگاه:
در این دوره ابتدا با سایتون و نحوه راه اندازی آن آشنا میشویم. سپس بعد از یادگیری اصول نگارش کد ها و نحوه استفاده از سایتون با استفاده از چندین مثال عملی، افزایش سرعت اجرای کدها را با استفاده از سایتون عملا درک میکنیم.
در جلسه اول ابزارهای مورد نیاز را معرفی خواهیم کرد. سپس در جلسه دوم ماهیت سایتون را مورد بحث قرار خواهیم داد و دلیل افزایش سرعت اجرای کدها را بررسی خواهیم کرد. سپس در جلسه سوم یک مثال عملی از سایتون را بررسی خواهیم کرد.
در جلسه چهارم در یک مثال خیلی جذاب با استفاده از کتابخانه time سرعت اجرای کد پایتون را با سرعت اجرای کد مشابه سایتون مقایسه خواهیم کرد. و بصورت عملی قدرت خارق العاده سایتون و افزایش سرعت اجرای 30 برابری کدهای سایتون را درک خواهیم کرد.
سپس در جلسه پنجم در مورد انواع توابع موجود در سایتون بحث خواهیم کرد. در ادامه در جلسه ششم درمورد افزایش سرعت کدهای پایتون که از آرایه و ماتریس ها استفاده میکنند، با استفاده از پکیج محبوب numpy و سایتون بحث خواهیم کرد. و در نهایت در جلسه اخر ابتدا بررسی خواهیم کرد که چگونه میتوانیم کدهای خود را در محیط توسعه pycharm اجرا کنیم. سپس پروژه نهایی که موضوع آن الگوریتم مرتب سازی آرایه ها میباشد را بررسی خواهیم کرد.
هدف از پروژه نهایی درک الگوریتم های بهینه و تاثیر مثبت انتخاب الگوریتم بهینه بر روی سرعت اجرای کدها میباشد.
این آموزش بینظیر است زیرا:
- با استفاده از سایتون میتوانیم سرعت اجرای برنامههای پایتون خود را 20 تا 30 برابر افزایش دهیم.
- احتیاج به یاد گرفتن زبان جدید ندارید و میتوانید با دانش پایتون، سرعت اجرای کدهای پایتون خود را افزایش دهید.
- سایتون یکی از محبوبترین و رایجترین روشهای افزایش سرعت اجرای برنامههای پایتون هست.
کلیدواژگان
آموزش cython | فیلم آموزش سایتون پروژه محور | آموزش پروژه محور زبان سایتون | سایتون چیست | زبان مفسری یا کامپایلری | افزایش سرعت پایتون
بهنام (خریدار محصول) –
سلام. وقت بخیر
کدهای پروژه (درس هفتم) در فایل دانلودی نبود.
روابط عمومی هم رویش –
با سلام و احترام.
با هماهنگی گروه تولید محتوای این دوره، فایلهای دوره که به طرز عجیبی حذف شده بودن مجدد داخل فایل زیپ شده قرار گرفتند. لطفا هم اکنون به بخش دانلود های حساب کاربری خود مراجعه نمایید و فایل درس ۷ را مجدد دریافت کنید.
حسین نکویی (خریدار محصول) –
سلام چرا colab شما کدهای سایتون را میشناسه ولی colab من کدهای سایتون را نمیشناسه ولی اجرا می کنه؟
سپهر (خریدار محصول) –
سلام. در یک قسمت از اموزش، برای وارد کردن numpy ، کد cimport numpy رو وارد کردید. اما وقتی من اینو مینویسم خطا میگیره. چه باید بکنم؟
جواد (خریدار محصول) –
سلام وقتتون بخیر خسته نباشید
ببخشید من یک برنامه دارم که با pyqt 5 طراحی کردم و با selenium کار میکنه… این برنامه رو هم میتونم از زبان پایتون به سایتون تغییر بدم؟
بعد از تبدیل به سایتون، میتونم با یک کامپایلر تبدیلش کنم به فایل exe؟
و یک سوال دیگه اینکه برنامه من درحال حاضر که با پایتون هست، فایل اجرایی اون قابل اجرا روی ویندوز های 7 نیست! اگر تبدیلش کنم به فایل زبان سایتون و بعد از زبان C خروجی EXE بگیرم بنظرتون مشکل اجرا شدنش حل میشه؟
محمد وحید کوه کن (خریدار محصول) –
جناب آصفی واقعا ممنونم که همیشه انقدر با حوصله و کامل سوالات رو پاسخ میدین. متشکر
مصطفی آصفی –
سلامت باشید. شما لطف دارید.
محمد وحید کوه کن –
سلام و عرض خسته نباشید خدمت شما.. استاد سوالی داشتم در مورد این که سورس کد خروجی نرم افزار پایتونی رو چطور میشه از دسترس عموم خارج کرد؟ مثلا فرض کنید وقتی با pyinstaller خروجی میگیریم فایل های .py و .pyc تولید میکنه که توسط بقیه قابل خوندنه. خواستم بدونم چطور میشه این مشکل رو حل کرد؟ یا حداقل استخراج سورس کد ها رو سخت کرد. آیا با cython چنین چیزی ممکنه؟ یا راه دیگه ای داره.. یه مقدار سوالم از موضوع آموزش دور بود ولی ممنون میشم جواب بدین
مصطفی آصفی –
سلام به شما آقای کوه کن عزیز. شما می تونید با استفاده از –onefile موقع ایجاد فایل exe فایل رو به صورت واحد دربیارین. این آموزش رایگان تولید فایل exe در پایتون (+) رو هم در کنار درس تولید فایل exe که در اون بخش آموزش مقدماتی کیوی داریم ببینید.
پینوشت: توضیح بالا به این معنی نیست که فایلتون به هیچ وجه دیگه با مهندسی معکوس قابل سورس گشایی نباشه. وقتی کسی هست که این ابزار رو بسازه کسی هم پس هست که راه معکوس رو طی کنه و از خروجی این ابزارها به فایل اولیه برسه. کار درست اینه که تمام این اطلاعات حساس همون روی سرورتون باشه و با api بخونید. مثلا کلید پرداخت کاربر می تونه تو یه جدول موقت تو دیتابیس سرور ذخیره بشه. در موقع لزوم مثلا وقتی کاربر می خواد پرداخت کنه اون رو می خونید (بر اساس id کاربر یا سشن موقت کاربر) و اگه معتبر بود پرداخت رو انجام میدین. پسورد دیتابیس سایت هم همین طور. اصلا شما گذرواژه دیتابیس سایت رو نباید توی سورس کد لوکال بگذارین. فرداروزی اگه سایت هک شد و ناچار شدین گذرواژه رو عوض کنید چه می کنید؟ همه باید فایل exe خودشون رو به روز کنن؟ بهتره اگه کاری با دیتابیس سایت دارید و اطلاعاتی رو می خواید بخونید همون یه api بنویسید که کاربر بفرسته و اطلاعات مورد نظر رو بخونه و به صورت جیسون دریافت کنه. کار با api در پایتون رو یاد بگیرید.
پس در کل بهتره که اطلاعات حساس مثل رمزها رو به سادگی داخل کدتون نگذارید. اگرم مجبور هستین مثلا عجله دارید که حالا محصول رو تولید و اعتبارسنجی کنید (که توصیه نمی کنم) علاوه بر یکپارچه کردن فایل exe حتما موارد زیر رو بررسی کنید:
۱- کدتون رو یا به طور کامل یا موارد حساسش رو رمزگذاری کنید. برای رمزگذاری اطلاعات عبارت «encryption library python» رو گوگل کنید یا در یوتیوب بگردید فیلم مفید در این زمینه پیدا کنید و ببینید که دید پیدا کنید.
۲- این کتابخونه پایتون به نام pyarmor هم برای به هم ریختن کد بررسی کنید.
مصطفی آصفی –
بسیار عالی. ممنون از شما مهندس صادقی عزیز. خوبه که هم استفاده سایتون در ژوپیتر رو گفتین -که برای داده کاوی و هوش مصنوعی خوبه- و هم استفاده از سایتون در پروژه های پایتونی در پایچارم که برای برنامه نویسهای حرفهای به کار میاد.