Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
Please open Telegram to view this post
VIEW IN TELEGRAM
کد بالا رو در دو محیط مختلف اجرا کنید
یکی در یک فایل .py
دیگری در فایل .ipynb
نتایج متفاوت هست!
چرا؟ 😊😊
🔎 @py4ds
یکی در یک فایل .py
دیگری در فایل .ipynb
نتایج متفاوت هست!
چرا؟ 😊😊
🔎 @py4ds
😱2
Python for Data Science
کد بالا رو در دو محیط مختلف اجرا کنید یکی در یک فایل .py دیگری در فایل .ipynb نتایج متفاوت هست! چرا؟ 😊😊 🔎 @py4ds
📌اختلاف این دو حالت برمیگرده به مبحث Interning که در اینجا برای مقادیر Integer در بازهی
🔺اگر دارید توی هر نوعی از شل توی پایتون (python shell , ipython, ...) کد میزنید باید حواستون باشه که این مقادیر یکبار ساخته میشن و برای همیشه از همونا استفاده میشه اما مقادیر خارج از این بازه هربار که لازم باشه از اول ساخته میشه. یعنی id اونها ممکنه با هم فرق داشته باشه
🔺اما اگر کل کد توی فایل .py به پایتون بدید اونو بهینه میکنه و تا زمانی که لازم هست مقادیر integer خارج از اون بازه رو نگه میداره. بنابراین این مقادیر هم مثل مقادیر ذکر شده در بازهی فوق فقط یکبار ساخته میشن.
🔹خلاصه هرجایی دارید از is استفاده میکنید حسابی حواستون رو جمع کنید که یه وقت اچتباهی کد نزنید! 😁
🔎 @py4ds
[-5, 256]هستند.
🔺اگر دارید توی هر نوعی از شل توی پایتون (python shell , ipython, ...) کد میزنید باید حواستون باشه که این مقادیر یکبار ساخته میشن و برای همیشه از همونا استفاده میشه اما مقادیر خارج از این بازه هربار که لازم باشه از اول ساخته میشه. یعنی id اونها ممکنه با هم فرق داشته باشه
🔺اما اگر کل کد توی فایل .py به پایتون بدید اونو بهینه میکنه و تا زمانی که لازم هست مقادیر integer خارج از اون بازه رو نگه میداره. بنابراین این مقادیر هم مثل مقادیر ذکر شده در بازهی فوق فقط یکبار ساخته میشن.
🔹خلاصه هرجایی دارید از is استفاده میکنید حسابی حواستون رو جمع کنید که یه وقت اچتباهی کد نزنید! 😁
🔎 @py4ds
Medium
3 Facts of the Integer Caching in Python
Understand some confusing results made by Python
👍2
🔹دسترسی رایگان و بدون فیلترشکن به ChatGPT
سایت زیر توسط مجموعه Quora توسعه داده شده که یک سایت پرسش و پاسخ هست!
این سایت چند ماهی هست که لانچ شده و به چندتا از رباتهای چت هوش مصنوعی متصل هست. شما میتونید خیلی راحت ازشون استفاده کنید!
همینطور میتونید یک ربات مخصوص با پرامپت مخصوص برای خودتون ایجاد کنید و جوابهای شخصیسازی شده بگیرید!
https://Poe.com
🔎 @py4ds
سایت زیر توسط مجموعه Quora توسعه داده شده که یک سایت پرسش و پاسخ هست!
این سایت چند ماهی هست که لانچ شده و به چندتا از رباتهای چت هوش مصنوعی متصل هست. شما میتونید خیلی راحت ازشون استفاده کنید!
همینطور میتونید یک ربات مخصوص با پرامپت مخصوص برای خودتون ایجاد کنید و جوابهای شخصیسازی شده بگیرید!
https://Poe.com
🔎 @py4ds
🔸 در حال آماده سازی یک فایل ارائه در مورد خطرات AI هست.
تا اینجا مشکلی نیست
مشکل اونجاست که توی مانیتور پایین داره از ChatGPT سوال میپرسه!
🔎 @py4ds
تا اینجا مشکلی نیست
مشکل اونجاست که توی مانیتور پایین داره از ChatGPT سوال میپرسه!
🔎 @py4ds
😁2
Forwarded from Python Hints
AdamJohnson-SpeedupyourDjangotests.pdf
5.7 MB
این پست استثنا هست :
توی مدتی که دارم django میخونم خیلی ایراد دیدم توی کدهای توسعه داده شده توسط دوستان
من خودمم اشتباه زیاد دارم؛ ولی خب در نظر بگیرید من سنیور django نیستم و تازه شروع کردم اما آشنایی بالایی که با
system design, software engineering
دارم باعث میشه خیلی از دوستان لطف کنند و من رو هم در زمره سنیورهای جنگو قرار بدند (هنوز سابقه ام به یکسال نرسیده)
یکی از معظلاتی که رو آپدیت پروژه شرکت داشتم؛ سرعت پایین کدهای تست بود و متاسفانه هیچکس هم نتونست کمکم کنه روی این موضوع
حالا به کتابی برخوردم که آرزو میکردم ۱ سال پیش پیداش کرده بودم یا حداقل یک
senior
بهم معرفی میکرد که بخونم.
برای اینکه کسی مثل من نشه و چون django developer بسیار داریم این پست و کتاب رو گذاشتم.
کتاب رو گذاشتم؛ چون خرید از ایران بسیار سخت بود.
Adam Johnson - Speedup your django tests
کتاب راحت ۱۰ ستاره هست؛ هم بخاطر اهمیت موضوع هم نوشتار و …
توی مدتی که دارم django میخونم خیلی ایراد دیدم توی کدهای توسعه داده شده توسط دوستان
من خودمم اشتباه زیاد دارم؛ ولی خب در نظر بگیرید من سنیور django نیستم و تازه شروع کردم اما آشنایی بالایی که با
system design, software engineering
دارم باعث میشه خیلی از دوستان لطف کنند و من رو هم در زمره سنیورهای جنگو قرار بدند (هنوز سابقه ام به یکسال نرسیده)
یکی از معظلاتی که رو آپدیت پروژه شرکت داشتم؛ سرعت پایین کدهای تست بود و متاسفانه هیچکس هم نتونست کمکم کنه روی این موضوع
حالا به کتابی برخوردم که آرزو میکردم ۱ سال پیش پیداش کرده بودم یا حداقل یک
senior
بهم معرفی میکرد که بخونم.
برای اینکه کسی مثل من نشه و چون django developer بسیار داریم این پست و کتاب رو گذاشتم.
کتاب رو گذاشتم؛ چون خرید از ایران بسیار سخت بود.
Adam Johnson - Speedup your django tests
کتاب راحت ۱۰ ستاره هست؛ هم بخاطر اهمیت موضوع هم نوشتار و …
👍5
Forwarded from Django Expert (Boby Cloud)
✔️ شاید تا الان براتون پیش اومده باشه که موقع نوشتن حلقههای for در پایتون، با خودتون فکرکنید که شاید راههای بهتری هم وجود داشته باشه.
✅ در این مقاله ۳۰ مثال پایتونیک مختلف رو بررسی میکنیم تا از نوشتن حلقههای for اجتناب کنیم. مثالهایی که با استفاده از توابع built-in پایتون به دلیل پیادهسازیهای داخلی پایتون (cpython) پرفورمنس بهتری دارن تا روش های functional programming که در کامیونیتی پایتون و متدهای built-in پایتون وجود داره و ...
توضیحات بیشتر همراه با مثالهای مختلف رو میتونید در این مقاله مطالعه کنید:
👉 30 Pythonic Ways To Avoid For Loops — A Decade-Long Journey Best Practices
اگر این مقاله رو مفید دیدید، ممنون میشم به اشتراک بزارید.
#python #best_practice
〰〰〰〰〰〰〰
© @DjangoEx
✅ در این مقاله ۳۰ مثال پایتونیک مختلف رو بررسی میکنیم تا از نوشتن حلقههای for اجتناب کنیم. مثالهایی که با استفاده از توابع built-in پایتون به دلیل پیادهسازیهای داخلی پایتون (cpython) پرفورمنس بهتری دارن تا روش های functional programming که در کامیونیتی پایتون و متدهای built-in پایتون وجود داره و ...
توضیحات بیشتر همراه با مثالهای مختلف رو میتونید در این مقاله مطالعه کنید:
👉 30 Pythonic Ways To Avoid For Loops — A Decade-Long Journey Best Practices
اگر این مقاله رو مفید دیدید، ممنون میشم به اشتراک بزارید.
#python #best_practice
〰〰〰〰〰〰〰
© @DjangoEx
📗 #معرفی_کتاب
Python Concurrency with asyncio
Matthew Fowler
🔺کتابی خوب برای یادگیری مفاهیم async در پایتون
🔎 @py4ds
Python Concurrency with asyncio
Matthew Fowler
🔺کتابی خوب برای یادگیری مفاهیم async در پایتون
🔎 @py4ds
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔹اگر از من بپرسید دوران فعلی که در اون هستیم با ظهور و بروز چه تکنولوژی، پیشرفتی مثل ایجاد کامپیوترها رو خلق میکنه به شما خواهم گفت «کامپیوترهای کوانتومی»
🔹بواسطهی رشته تحصیلی که داشتم از حدود ۱۲ سال قبل با این مقوله آشنا بودم و اطمینان داشتم که هیچ برتری تکنولوژیکی، پیشرفتی به اندازه کامپیوترهای کوانتومی ایجاد نخواهد کرد.
🔹آنچه که الان از کامپیوترهای کلاسیکی(ترانزیستوری) میبینیم با به وجود اومدن کامپیوترهای کوانتومی به کلی تغییر میکنه. این تغییرات به قدری بزرگ هست که در حد عبور از عصر چرتکه به کامپیوتر هست.
👈در اون زمان دیگه نمیشه از چیزی مثل الگوریتم رمزنگاری RSA بهره برد چون به راحتی میشه اونو شکوند. ضمنا تا الان الگوریتمهای کوانتومی مختلفی طراحی شده!
توضیح فیلم: در سالهای اخیر نمونههای مختلفی از پردازشگرهای کوانتومی در سطح آزمایشگاهی(غیرتجاری) ساخته شده اما تلاش اینتل با بقیه فرق داره و به محصول تجاری نزدیکتره!
🔺هوش مصنوعی الان با چیزی که در دوران کامپیوترهای کوانتومی خواهیم دید مثل فرق ماشین اسباب بازی با ماشین واقعی هست!
اگر قراره ازش بترسید از اون بترسید نه این!
🔎 @py4ds
🔹بواسطهی رشته تحصیلی که داشتم از حدود ۱۲ سال قبل با این مقوله آشنا بودم و اطمینان داشتم که هیچ برتری تکنولوژیکی، پیشرفتی به اندازه کامپیوترهای کوانتومی ایجاد نخواهد کرد.
🔹آنچه که الان از کامپیوترهای کلاسیکی(ترانزیستوری) میبینیم با به وجود اومدن کامپیوترهای کوانتومی به کلی تغییر میکنه. این تغییرات به قدری بزرگ هست که در حد عبور از عصر چرتکه به کامپیوتر هست.
👈در اون زمان دیگه نمیشه از چیزی مثل الگوریتم رمزنگاری RSA بهره برد چون به راحتی میشه اونو شکوند. ضمنا تا الان الگوریتمهای کوانتومی مختلفی طراحی شده!
توضیح فیلم: در سالهای اخیر نمونههای مختلفی از پردازشگرهای کوانتومی در سطح آزمایشگاهی(غیرتجاری) ساخته شده اما تلاش اینتل با بقیه فرق داره و به محصول تجاری نزدیکتره!
🔺هوش مصنوعی الان با چیزی که در دوران کامپیوترهای کوانتومی خواهیم دید مثل فرق ماشین اسباب بازی با ماشین واقعی هست!
اگر قراره ازش بترسید از اون بترسید نه این!
🔎 @py4ds
👍1
Forwarded from جنگولرن
✅ مطلب مفیدی درباره Logging از کانال @PyHints
یک دوستی دیروز راجب لاگ نویسی توی پایتون سوال داشت من به اینصورت براش توضیح دادم گفتم شاید مفید باشه :
نشون میده هر دسته از لاگ رو چطور باید باهاش برخورد کرد بطور کلی ۵ دسته بندی برامون خیلی مهم هستندکه به ترتیب از محیط توسعه و اطلاعات بیشتر به سمت محیط پروداکشن و وضعیت خطرناک تر میریم :
نسخه روزانه فقط اطلاعات سطح
نسخه ماهانه اما جاهایی هست که
اما بطور کلی warning , … خطاهای نرم افزار رو لاگ میکنه مثلا اگر سرور ارور 500 برای کاربری فرستاد تحت چه شرایطی و به چه دلیل این اتفاق افتاده و …
توی اکثر سناریوها لاگ ها بعد از یک مدت بصورت اتوماتیک بررسی میشن و تحت شرایطی خاص به ادمین سرور یا توسعه دهنده یا … هشداری رو ارسال میکنند پس اینکه چه اطلاعاتی به چه صورتی نوشته بشه مهم هست و وظیفه
بعنوان مثال روی پروژههای مهم لاگهای سطح
بنظرم دونستن اهمیت این ۴ تا کامپوننت؛ برای لاگ نویسی از هرچیزی مهمتر هست.
@PyHints
یک دوستی دیروز راجب لاگ نویسی توی پایتون سوال داشت من به اینصورت براش توضیح دادم گفتم شاید مفید باشه :
Python logging components :وضعیت لاگ؛ همیشه لازم هست.
1- Loggers
نشون میده هر دسته از لاگ رو چطور باید باهاش برخورد کرد بطور کلی ۵ دسته بندی برامون خیلی مهم هستندکه به ترتیب از محیط توسعه و اطلاعات بیشتر به سمت محیط پروداکشن و وضعیت خطرناک تر میریم :
debug - info - warning - error - critical
معمولا روی محیط توسعه از debug
استفاده میکنیم و روی محیط پروداکشن شخصا ۲ تا نسخه نگه میدارم یک نسخه که روزانه پاک میشه (به این وضعیت اتومات حذف شدن هم logrotate
گفته میشه اصطلاحا) و یک نسخه هم که ماهانه rotate
میشه ولی تا ۱ سال گذشته رو نگهداری میکنیم. نسخه روزانه فقط اطلاعات سطح
info
رو نگهداری میکنه؛ بیشتر برای این نگهداری میکنیم که بدونیم چه کسی؛ چه زمانی؛ چیکار کرده ؟نسخه ماهانه اما جاهایی هست که
warning - error - critical
داشتیم؛ ی وقتایی ممکنه از لاگ info
برای warning
استفاده بشه : برای مثال ممکنه یک یوزر با رفتار امن شروع کنه به درخواست زیاد فرستادن به یکی از لاگین ها اینجا جایی هست که میشه لاگ info رو بررسی کرد و اطلاعات اون یوزر رو توی warning هم داشت اما بطور کلی warning , … خطاهای نرم افزار رو لاگ میکنه مثلا اگر سرور ارور 500 برای کاربری فرستاد تحت چه شرایطی و به چه دلیل این اتفاق افتاده و …
2- Formatters
از قدیم گفتن لاگ بدون فرمت بدرد صاحب کد هم نمیخوره؛توی اکثر سناریوها لاگ ها بعد از یک مدت بصورت اتوماتیک بررسی میشن و تحت شرایطی خاص به ادمین سرور یا توسعه دهنده یا … هشداری رو ارسال میکنند پس اینکه چه اطلاعاتی به چه صورتی نوشته بشه مهم هست و وظیفه
formatter
هم دقیقا همین هست. مثلا : warning sample.py unauthorized requests to resource at 2023-06-20 17:16:15 from 192.168.1.5 response code 401بطور کلی مشخص میکنه با هر پیام لاگی که میاد چیکار باید کرد ؟ اینکه برای info فایل جدا داشته باشیم یا یک سری از اطلاعات رو داخل کنسول / ترمینال نمایش بدیم و … توسط ایشون انجام میشه
3- Handlers
بعنوان مثال روی پروژههای مهم لاگهای سطح
critical
رو بصورت ایمیل یا پیامک برای چند شخص میفرستیم تا سریعتر بررسی بشه و این کار توسط Handler
انجام میشه 4- Filtersممکنه توی لاگ نویسی یک سری از اطلاعات محرمانه باشه و تحت هیچ شرایطی نباید توی لاگ بیاد مثلا توی مثال بالا ممکن بود من توی اطلاعات لاگ هم بگم که خب شماره موبایل کاربری که داره اینکار رو میکنه هم داشته باشیم اما قطعا بیزینس نمیخواد این اطلاعات توی لاگ هایی که آرشیو میکنه یا ممکنه به یک شرکت دیگری برای بررسی بده وجود داشته باشه پس در نهایت یک فیلتر مینویسه که برخی از این اطلاعات که محرمانه هستند حذف بشه یا با یک مقدار از پیش تعیین شده جایگزین بشه.
بنظرم دونستن اهمیت این ۴ تا کامپوننت؛ برای لاگ نویسی از هرچیزی مهمتر هست.
@PyHints
👍2
Iran-Internet-v0.7.pdf
4.5 MB
🔺گزارش مفصلی از وضعیت اینترنت ایران، که توسط انجمن تجارت الکترونیک تهران تهیه شده و بهصورت مستند نشانداده ایران از نظر اختلالات اینترنت، محدودیتها و سرعت، وضعیت «بحرانی» دارد.
🔎 @py4ds
🔎 @py4ds
👍2
🏴 آغاز موسم عاشقی....
▪️سلام بر مُحـرم ....
▪️فرا رسیدن ماه محرم و ایام سوگواری و عزاداری سالار شهیدان و سرور آزادگان جهان حضرت ابا عبدالله الحسین علیه السلام و یاران با وفایش بر همه عاشقان و پیروانش تسلیت باد.
🔎 @py4ds
▪️سلام بر مُحـرم ....
▪️فرا رسیدن ماه محرم و ایام سوگواری و عزاداری سالار شهیدان و سرور آزادگان جهان حضرت ابا عبدالله الحسین علیه السلام و یاران با وفایش بر همه عاشقان و پیروانش تسلیت باد.
🔎 @py4ds
👍7
jamedaran
👍4
🔺 استفاده از ساختار decorator برای سنجش زمان اجرای توابع کاربردی هست
احتمالا مثالهایی از این دست رو هم قبلا دیده باشید
اما ساختار کد بالا یک نمونه ContextManager هست که میتونید بدون تغییر زیاد توی کد بخشهای مختلف اون رو زمانسنجی کرده و بعدا با هم مقایسه کنید.
ساختار فوق در اینجا استفاده شده است.
🔎 @py4ds
احتمالا مثالهایی از این دست رو هم قبلا دیده باشید
اما ساختار کد بالا یک نمونه ContextManager هست که میتونید بدون تغییر زیاد توی کد بخشهای مختلف اون رو زمانسنجی کرده و بعدا با هم مقایسه کنید.
ساختار فوق در اینجا استفاده شده است.
🔎 @py4ds
👍1
Forwarded from Sadra Codes
بررسی جوانب پایتون ۳.۱۲
✅ از این به بعد میتونید fstring های تودرتو بنویسید. مثلا:
✅ لایبرری
✅ از این به بعد میتونید تایپ هینت
✅ تمام comprehensionهایی که در بدنه فانکشنها هستن، از لحاظ سرعت اجرا بهینهتر شدن.
✅ ارور مسیجها هم بهینه و هوشمندتر شدن. اگه که بتونن، در محدوده شرایط وسیعتری، سلوشن میدن.
➕ دوتا سینتکس جدید هم اضافه شده به پایتون. یکی
✅ از این به بعد میتونید fstring های تودرتو بنویسید. مثلا:
phrase = f"Hello {f"{name}"}"
# Hello Sadra
بنظرم آنچنان کاربردی نیست و فهمیدنش در نگاه اول یکم سخته. شاید هایلایترها درکش رو راحتتر کنن در آینده ولی یه فیچر جدید که اضافه شده و خوشم اومد، multiline fstring هست که بهتون اجازه میده، اف استرینگ رو در چند خط بنویسید و حسابی expandش کنید. تازه میتونید در بدنهاش، کامنت هم بنویسید:phrase = f"Hello {
name # User.name
}"
# Hello Sadra✅ بهینهسازی سیستم Tokenization. پایتون یه ماژول tokenizer داره که ازش واسه آنالیز و پارس کردن کلمات و حروف ولید پایتون استفاده میکنه. به هر چانک حروف از استرینگ ورودی توکن میگن. اکثر تولهای linting و formatting از این ماژول واسه فرمت و لینت کردن کد پایتون استفاده میکنن. تا نسخه ۳.۱۱، این ماژول به زبان پایتون بود. بدلیل اضافه شدن nested fstring و مولتی لاین fstring، مجبور شدن این ماژول رو بازنویسی کنن و با C نوشتنشن و از لحاظ زمان runtime، سرعتش به شدت رفته بالا. این باعث میشه تمام tool هایی که از tokenizer استفاده میکنن، سریعتر اون ماکروهاشون ران شن.
✅ لایبرری
distutils
دیپریکت شده و دیگه توی standard library قرار نداره. از این لایبرری واسه نوشتن و توزیع کردن پکیج پایتون استفاده میشد که به دلیل سرعت پایین و محدودیتهایی که نسبت به پکیج setuptools
داشت، ملت همیشه میرفتن سمت setuptools
. حتی خود pip
هم به setuptools
وابسته هست. اگه venv
بسازین، میبینید که بصورت دیفالت، setuptools
نصبه. یه نکته که هست، setuptools
جزو standard library نیست و درواقع از هسته distutils
پایتون استفاده میکنه. از اونجا که distutils
ی دیگه در کار نیست و pip
نسخههای ۲۲.۱ به بالا دیگه وابستگی به setuptools
نداره، عملا هیچ ابزار رسمیای واسه توزیع پکیج پایتون هم نخواهیم داشت. این هم خوبه، هم بد.pip (>= 22.1) does not require setuptools to be installed in the environment. setuptools-based (and distutils-based) packages can still be used with pip install, since pip will provide setuptools in the build environment it uses for building a package.حالا یه اتفاق دیگه هم افتاده. اونم اینکه
venv
دیگه بخشی از پکیج setuptools
نیست. تا امروز بود ولی دیگه نیس. حالا چیکار میشه کرد؟ خب distutils
مستقل شده و شما میتونید خودتون setuptools
رو pip install
کنید و ازش استفاده کنید و واسه venv
هم، virtualenv
نصب کنید. دیگه کامند زیر کار نمیکنه:❌ python -m venv venv
بطور کلی، از این به بعد هر محیط venv
که با virtualenv
میسازید، در isolatedترین شکل ممکن قرار دارن و site-packageتون خالی خالیه. حتی wheel
هم ندارید. فقط pip
رو دارید.✅ از این به بعد میتونید تایپ هینت
kwargs**
رو کاستومایز کنید. من خودم همیشه انوتیت میکردم به typing.Any
ولی از این به بعد میتونید TypedDict
رو بهش انوتیت کنید:from typing import TypedDict, Unpack
class Values(TypedDict):
name: str
age: int
def main(**kwargs: Unpack[Values]): ...
✅ یه تایپ هینت جدید اومده که خیلی خوشم اومد، typing.override
هست. این موقعی بدرد میخوره که میخواین تایپ هینت ست کنید واسه متدی که توی subclass قراره اوررایت شه. اگه تغییری توی superclass ایجاد شه و اسم اون متد توی سوپرکلس تغییر کنه، اگه یه سیستم type checking داشته باشین یه چیز مثل mypy
، حتما خطا رو میگیره و بهتون نشون میده. این درحالیه که اگه کد رو اجرا کنید، ممکنه خطا نگیرید و اون متد هم override نشه.from typing import override
class A:
def greet(): ...
class B(A):
@override
def greet(): ...
توی این مثال، اگه روزی برسه که اسم متد greet
توی سوپرکلس تغییر کنه به greeting
، حتما type checker ارور میده ولی اگه annotate نکرده باشید، اروری دریافت نمیکنید و صرفا اون logic درست کار نمیکنه.✅ تمام comprehensionهایی که در بدنه فانکشنها هستن، از لحاظ سرعت اجرا بهینهتر شدن.
✅ ارور مسیجها هم بهینه و هوشمندتر شدن. اگه که بتونن، در محدوده شرایط وسیعتری، سلوشن میدن.
➕ دوتا سینتکس جدید هم اضافه شده به پایتون. یکی
type
هست که واسه Type Alias استفاده میشه و دیگری هم Type Parameter هست که یه مدل جدید واسه تعریف فانکشنها و کلسهای جنریک پایتونه. شیوه استفاده ازشون به این شکله:type name = str
type age = int
قبلا باید جنریک فانکشن رو اینجوری تعریف میکردیم:def greet(name: List[str]):
...
ولی الان مینویسیم:type T = List[str]
def greet[T](name: T): ...
این باعث میشه که پرینسیپل DRY آسیب نبینه.👍2
Forwarded from Python BackendHub
بزرگ ترین تغییر ۳.۱۲ نسبت به ۳.۱۱ که بنظرم صدرا اشاره نکرد بهش PEP 684 بود
A Per-Interpreter GIL
که البته فعلا تو سطح پایتون نیست و python api نداره.
ولی این تغییر تو ۳.۱۳ خودشو خیلی بیشتر نشون میده. جایی که API python اش میاد. طبق PEP 554.
https://peps.python.org/pep-0554/
جایی که ما میتونیم حالا از این تغییراتی که تو ۳.۱۲ انجام شده و API پایتونیش تو ۳.۱۳ هست استفاده کنیم:)
اینکه چیه و چیکار میکنه تو این پست نمیگنجه. توصیه میکنم حتما این دو PEP رو وقت بذارین و بخونید که از بقیه جلوتر باشید تا وقتی ۳.۱۳ اومد بدونید چی باید یاد بگیرید 😁 فقط یک مقایسه میکنم بین sub Interpreter و مولتی پروسس
True Parallelism -> Multiprocess: YES | Subinterpreters: Potential
Isolation -> Multiprocess: HIGH | Subinterpreters: MEDIUM
Overhead -> Multiprocess: HIGH | Subinterpreters: LOW
و توی theory حداقل باید Subinterpreters یک مموری ایزوله و هندل CPU Bound task به صورت بهینه تر رو به ما بدن که باعث میشه پایتون با استفاده از این مفهوم جدید برای real-time processing و streaming data بسیار مناسب تر شه. چرا؟چون میتونید یک subinterpreter داشته باشید که دیتا رو بگیره و یک subinterpreter داشته باشید که دیتا رو پروسس کنه که این ایزوله سازی باعث استفاده بهتر و بهینه تر از ریسورستون میشه و latency رو هم کاهش میده
@ManiFoldsPython
A Per-Interpreter GIL
که البته فعلا تو سطح پایتون نیست و python api نداره.
ولی این تغییر تو ۳.۱۳ خودشو خیلی بیشتر نشون میده. جایی که API python اش میاد. طبق PEP 554.
https://peps.python.org/pep-0554/
جایی که ما میتونیم حالا از این تغییراتی که تو ۳.۱۲ انجام شده و API پایتونیش تو ۳.۱۳ هست استفاده کنیم:)
اینکه چیه و چیکار میکنه تو این پست نمیگنجه. توصیه میکنم حتما این دو PEP رو وقت بذارین و بخونید که از بقیه جلوتر باشید تا وقتی ۳.۱۳ اومد بدونید چی باید یاد بگیرید 😁 فقط یک مقایسه میکنم بین sub Interpreter و مولتی پروسس
True Parallelism -> Multiprocess: YES | Subinterpreters: Potential
Isolation -> Multiprocess: HIGH | Subinterpreters: MEDIUM
Overhead -> Multiprocess: HIGH | Subinterpreters: LOW
و توی theory حداقل باید Subinterpreters یک مموری ایزوله و هندل CPU Bound task به صورت بهینه تر رو به ما بدن که باعث میشه پایتون با استفاده از این مفهوم جدید برای real-time processing و streaming data بسیار مناسب تر شه. چرا؟چون میتونید یک subinterpreter داشته باشید که دیتا رو بگیره و یک subinterpreter داشته باشید که دیتا رو پروسس کنه که این ایزوله سازی باعث استفاده بهتر و بهینه تر از ریسورستون میشه و latency رو هم کاهش میده
@ManiFoldsPython
Python Enhancement Proposals (PEPs)
PEP 554 – Multiple Interpreters in the Stdlib | peps.python.org
CPython has supported multiple interpreters in the same process (AKA “subinterpreters”) since version 1.5 (1997). The feature has been available via the C-API. [c-api] Multiple interpreters operate in relative isolation from one another, which facilit...
پایتون 3.12 نسخهای هست که میتونه به صورت پایدار تا چندسال ازش استفاده بشه
بی صبرانه منتظر ارائه این نسخه هستم
راستی این نسخه توی
Ubuntu 24.04
هم استفاده میشه
بی صبرانه منتظر ارائه این نسخه هستم
راستی این نسخه توی
Ubuntu 24.04
هم استفاده میشه