🐍 Python & Raspberry 🐍
8.21K subscribers
1.92K photos
125 videos
623 files
1.23K links
Python- Raspberry Pi-AI-IOT
ادمین : فرهاد ناصری زاده
@farhad_naserizadeh
@farhad3412

گروه پایتون
@Python_QA
تبادل
@mmtahmasbi
کانال مرتبط
@new_mathematical
@micropython_iot
@c_micro
اینستاگرام
http://Instagram.com/python_raspberry
Download Telegram
آخرین بازمانده از آن جمع پراکنده برفت؛
هوشنگ ابتهاج، ۶ اسفند ۱۳۰۶- ۱۹ مرداد ۱۴۰۱.

@raspberry_python
✔️ سوال‌ها:

چرا CPython رو با assembly نمینویسن؟

چرا CPython رو مثل PyPy نمیکنن؟ یا چرا از PyPy بجای CPython استفاده نمیکنیم؟

پاسخ سوال اول:
سوال اول: کد سی سریع‌تره یا کد اسمبلی؟

همه به من بگید ببینم، کامپایلرهای زبان سی از سورس‌کد C، چی تولید میکنن؟ خب حالت خییییلی پایه‌ اینه‌که از سورس C، کد اسمبلی تولید میکنن بعد با یه اسمبلر کد ماشین‌شون رو تحویل میدن.

اما حالت، هیچ‌وقت حالت پایه نیست 😁
کاری که یه کامپایلر سی انجام میده اینه که یه خروجی خیلی efficient و کد اسمبلی خیلی سریع‌ از اون سورس‌کد بیرون میکشه

این اصل ماجراست.
اینه که جواب سوال میشه کد سی در اکثر مواقع از کد اسمبلی hand written که دقیقا همون کار رو انجام میده سریع‌تره. این همه مغز و وقت صرف نوشتن کامپایلر کردن تا این بشه
تا این شده

این از این

سوال دوم: نوشتن کد سی آسون‌تره یا کد اسمبلی؟

سوال سوم: برای نوشتن یه برنامه خیلی ساده، کی سریع‌تر مینویسه یه C کار یا یه Assembly کار؟

سوال چهارم که جوابش هم میدونیم، کد کی سریع‌تره؟

تماما C برنده‌‌ی ماجراست
پس فکر اینکه CPython رو با اسمبلی بنویسن سریع‌تر میشه رو بندازید بیرون.

به چند دلیل: سری دلایل اول -> همین دلایل بالا
سری دلایل دوم: بابا پایتون توی یه سری کارا کنده به هزار تا دلیل دیگه 😕 گیر ندید به سی یا اسمبلی

الان سورس PyPy که سرعت خیلی بیشتری از CPython توی خیلی جاها داره ببینید، پایتونه به ولله تقریبا بالای ۹۸ ۹۹ درصد پایتونه
پس مشکل جای دیگه‌ست.

پاسخ سوال دوم:

پیاده‌سازی CPython یک پیاده‌سازی general هست.
این خیلی معنی‌ها داره
مثال: ببینید یه چیزی وجود داره به اسم numba
(برای مطالعه در مورد نامبا این مقاله‌ام‌ رو بخونید)
این یه JIT Compiler هست برای کارای عددی و محاسباتی دارای حلقه‌های زیاد

یکی از کارای jit ها همینه، چنین کدهایی رو سریع کنن اما آیا همه چنین کدهایی دارن؟ خیر
آیا تحمل اورهد و سنگینی JIT رو دارن؟ قطعا خیر
میدونید چقدر رم مصرف میکنن؟
برای یه راه‌حل مشابه بین پایتون و NodeJS، اون نسخه‌ی NodeJS حدود ۴.۵ برابر بیشتر از پایتون رم مصرف کرده، صرفا بخاطر داشتن JIT.
جیت‌ها start up رو هم کندتر میکنن

از اون طرف پایتون بعضی جاها از pypy سریع‌تره
مثلا یکی‌ش وب
آقای Anthony shaw یه چند تا بنچ‌مارک گرفتن با FastAPI و Uviloop و این دم و دستگاه‌ها
توی همه‌شون pypy بسیار از CPython کند‌تر بوده و رم مصرفی خیلی بیشتری داشته

یه مشکل دیگه هم هست
پای‌پای به طور صد درصد با C extension moduleها اوکی نیست
فرض کن نتونی numpy استفاده کنی 🙂

پس هر چیزی رو بهرکاری ساختن

#M4hdi

©@raspberry_python
🐍 Python & Raspberry 🐍
Photo
خروجی تصویر بالا چیست؟
Anonymous Quiz
6%
age
6%
0
58%
None
31%
Erorr
کی و چرا از Jupyter Notebook استفاده کنیم؟

به نظر من یکی از شاهکارهای تولید شده همین Jupyter Notebook (که برپایه ی Ipython هست) هست. خیلی خلاصه سعی میکنم به ویژگی هایی که داره اشاره کنم:

۱- مناسبترین گزینه برای زمانی که میخواید report ای به کسی یا جایی بفرستید یا جزوه نویسی کنید:
چون میتونید بین کد های پایتونیتون توضیحات بنویسید. اونم نه فقط تکست معمولی بلکه mardown و LaTeX و html و css و حتی چند کلاس آماده ی bootsrtap. چی بهتر از اینکه یه سری کد های پایتونی قابل اجرا همراه با توضیحات زیبا و رنگی در یک داکیومنت.

۲- از مهمترین ویژگی هاش اینکه cell cell ران میکنه کد هارو ولی به چه درد میخوره؟ فرض کنید شما یه کدی دارید مینویسید که درخواست میدید به URL ای و وقتی جوابش اومد یه کاری روش میکنید. اگه توی ماژول پایتونی بنویسید و توی کد هاتون ارور داشته باشید چی میشه؟ درستش میکنید و باید دوباره ران کنید اونوقت باید دوباره درخواست بزنید به اونجا. "وقت گیره"! یه مثال خیلی پرکاربرد تر دیگه، شما نیاز دارید تا یه محاسبات زمانبری و انجام بدید تا یه آرایه نامپای مثلا تشکیل بشه و حالا ازش یه استفاده کنید... دوباره همین داستان اگه ارور داشته باشید باز باید صبر کنید... به جاش میاید اون بخش setup قضیه رو توی یه cell انجام میدید دیگه همیشه داریدش توی رم. جلوتر فقط کد خودتونو ران میکنید.

۳- خب مثل باقی ادیتور ها سینتکس highlighting داره،‌ با تب code completion داره. ارور هارو زیباتر نمایش میده.

۴- قابلیت نمایش plot های مختلف و dataframe های pandas رو به صورت جدولی داخل خودش داره.

۵- وقتی یه document ای نوشتید به کلی فرمت از جمله PDF, HTML, RST, و خود PY خروجی بگیرید مناسب برای ارائه یا به اشتراک گذاری. گزینه آخر یعنی حتی میتونید اونو به ماژول پایتونی خروجی بگیرید و همه چیزایی که نوشتید به عنوان توضیحات میشه comment داخل اون ماژول.

۶- میتونید از magic command های موجود تو ipython استفاده کنید که بعضیاش خیلی مفیدن. (همونا که با % یا %% شروع میشه) از اینجا چک کنید چیزای باحالی داره.

۷- میتونید توش دستورات شل رو هم وارد کنیدو خروجیشو کنار خروجی های پایتونی خودتون هم ببینید حتی اونارو تو کدتون استفاده کنید!!
files = !ls
الان files عه شما یه لیستی از تمام فایل های داخل دایرکتوریتون هست.

۸- میتونید امکاناتش رو با نصب nbextension ها گسترش هم بدید. مثلا code formatter و یا box عه suggestion و یا linter و ... این لینک یا این لینک رو برای نمونه ببینید.

________________________________________
اگه ویژگی خوب دیگه ای رو نگفتم بگید همچنین ضعف هاش رو هم بگید مثلا جاهایی که مناسب نیست استفاده شه. اولین جایی که مناسب نیست اینکه پروژه توش بزنید...چون برای اینکار نیست اصلا. مثلا برای اینکه از یه ipynb توی یه ipynb دیگه چیزی import کنید نمیتونید مستقیم بزنید
from A import B
باید کار اضافه تری انجام بدید.

ولی درکل تو جایی که میشه ازش استفاده کرد فوق العادس 👍🏻

🖊 SorousH
Forwarded from Sadra Codes
یه سرویس Database as a Service MySQL هست به اسم PlanetScale. پلن رایگان هم داره بهتون 5 گیگابایت فضا روی AWS میده بدون کردیت یا چیزی.

راحت میتونید سرویس هاتون رو بهش وصل کنید و ازش استفاده کنید.

https://planetscale.com

اگه میخواید سرویس جنگوتون رو بهش وصل کنید، از این پکیجی که نوشتم استفاده کنید. :)

https://github.com/lnxpy/django-psdb-engine
Fluent_Python_Clear,_Concise,_and_Effective_Programming,_2nd_Edition.pdf
15.7 MB
Fluent Python: Clear, Concise, and Effective Programming, 2nd Edition

@raspberry_python
🐍 Python & Raspberry 🐍
Fluent_Python_Clear,_Concise,_and_Effective_Programming,_2nd_Edition.pdf
Python's simplicity lets you become productive quickly, but often this means you aren't using everything it has to offer. With the updated edition of this hands-on guide, you'll learn how to write effective, modern Python 3 code by leveraging its best ideas. Don't waste time bending Python to fit patterns you learned in other languages. Discover and apply idiomatic Python 3 features beyond your past experience. Author Luciano Ramalho guides you through Python's core language features and libraries and teaches you how to make your code shorter, faster, and more readable. Featuring major updates throughout the book, Fluent Python, second edition, covers: Special methods: The key to the consistent behavior of Python objects Data structures: Sequences, dicts, sets, Unicode, and data classes Functions as objects: First-class functions, related design patterns, and type hints in function declarations Object-oriented idioms: Composition, inheritance, mixins, interfaces, operator overloading, static typing and protocols Control flow: Context managers, generators, coroutines, async/await, and thread/process pools Metaprogramming: Properties, attribute descriptors, class decorators, and new class metaprogramming hooks that are simpler than metaclasses

@raspberry_python
Discover and organize thousands of tutorials to learn Python for free!

🔎 How to find the tutorial you need?

1. Go to https://lnkd.in/estqMVDg
2. Enter some keywords to search on the desired topic
3. OR click on ‘show extra filters’ (desktop only) and select a title using the ‘Source’ filter.

Did you find a great tutorial and want to learn more on the same topic? Use the ‘Find similar’ button to find tutorials that are similar or complementary to the one that you’re reading!

@raspberry_python