Python for Data Science
314 subscribers
127 photos
16 videos
12 files
61 links
اطلاعات مفید جهت یادگیری پایتون برای علم داده
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🔹اگر از من بپرسید دوران فعلی که در اون هستیم با ظهور و بروز چه تکنولوژی، پیشرفتی مثل ایجاد کامپیوترها رو خلق می‌کنه به شما خواهم گفت «کامپیوترهای کوانتومی»

🔹بواسطه‌ی رشته تحصیلی که داشتم از حدود ۱۲ سال قبل با این مقوله آشنا بودم و اطمینان داشتم که هیچ برتری تکنولوژیکی، پیشرفتی به اندازه کامپیوترهای کوانتومی ایجاد نخواهد کرد.

🔹آنچه که الان از کامپیوترهای کلاسیکی(ترانزیستوری) می‌بینیم با به وجود اومدن کامپیوترهای کوانتومی به کلی تغییر می‌کنه. این تغییرات به قدری بزرگ هست که در حد عبور از عصر چرتکه به کامپیوتر هست.

👈در اون زمان دیگه نمیشه از چیزی مثل الگوریتم رمزنگاری RSA بهره برد چون به راحتی میشه اونو شکوند. ضمنا تا الان الگوریتم‌های کوانتومی مختلفی طراحی شده!

توضیح فیلم: در سالهای اخیر نمونه‌های مختلفی از پردازشگرهای کوانتومی در سطح آزمایشگاهی(غیرتجاری) ساخته شده اما تلاش اینتل با بقیه فرق داره و به محصول تجاری نزدیکتره!

🔺هوش مصنوعی الان با چیزی که در دوران کامپیوترهای کوانتومی خواهیم دید مثل فرق ماشین اسباب بازی با ماشین واقعی هست!
اگر قراره ازش بترسید از اون بترسید نه این!

🔎 @py4ds
👍1
Forwarded from جنگولرن
مطلب مفیدی درباره Logging از کانال @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

3- Handlers

بطور کلی مشخص میکنه با هر پیام لاگی که میاد چیکار باید کرد ؟ اینکه برای info فایل جدا داشته باشیم یا یک سری از اطلاعات رو داخل کنسول / ترمینال نمایش بدیم و … توسط ایشون انجام میشه
بعنوان مثال روی پروژه‌های مهم لاگ‌های سطح critical رو بصورت ایمیل یا پیامک برای چند شخص می‌فرستیم تا سریعتر بررسی بشه و این کار توسط Handler انجام میشه

 4- Filters
ممکنه توی لاگ نویسی یک سری از اطلاعات محرمانه باشه و تحت هیچ شرایطی نباید توی لاگ بیاد مثلا توی مثال بالا ممکن بود من توی اطلاعات لاگ هم بگم که خب شماره موبایل کاربری که داره اینکار رو میکنه هم داشته باشیم اما قطعا بیزینس نمیخواد این اطلاعات توی لاگ هایی که آرشیو میکنه یا ممکنه به یک شرکت دیگری برای بررسی بده وجود داشته باشه پس در نهایت یک فیلتر می‌نویسه که برخی از این اطلاعات که محرمانه هستند حذف بشه یا با یک مقدار از پیش تعیین شده جایگزین بشه.

بنظرم دونستن اهمیت این ۴ تا کامپوننت؛ برای لاگ نویسی از هرچیزی مهمتر هست.

@PyHints
👍2
Iran-Internet-v0.7.pdf
4.5 MB
🔺گزارش مفصلی از وضعیت اینترنت ایران، که توسط انجمن تجارت الکترونیک تهران تهیه شده و به‌صورت مستند نشان‌داده ایران از نظر اختلالات اینترنت، محدودیت‌ها و سرعت، وضعیت «بحرانی» دارد.

🔎 @py4ds
👍2
🏴 آغاز موسم عاشقی....

▪️سلام بر مُحـرم ....

▪️فرا رسیدن ماه محرم و ایام سوگواری و عزاداری سالار شهیدان و سرور آزادگان جهان حضرت ابا عبدالله الحسین علیه السلام و یاران با وفایش بر همه عاشقان و پیروانش تسلیت باد.
🔎 @py4ds
👍7
jamedaran
📻 جامه‌دران (از آلبوم نینوا)
موسیقی: حسین علیزاده

#موسیقی
#دورها_آوایی_ست
@doorhaavayist
👍4
🏴 عاشورای حسینی تسلیت باد 🏴

🔎@py4ds
👍8
🔺 استفاده از ساختار decorator برای سنجش زمان اجرای توابع کاربردی هست
احتمالا مثالهایی از این دست رو هم قبلا دیده باشید

اما ساختار کد بالا یک نمونه ContextManager هست که می‌تونید بدون تغییر زیاد توی کد بخش‌های مختلف اون رو زمان‌سنجی کرده و بعدا با هم مقایسه کنید.

ساختار فوق در اینجا استفاده شده است.

🔎 @py4ds
👍1
Forwarded from Sadra Codes
بررسی جوانب پایتون ۳.۱۲

از این به بعد می‌تونید 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
پایتون 3.12 نسخه‌ای هست که می‌تونه به صورت پایدار تا چندسال ازش استفاده بشه
بی صبرانه منتظر ارائه این نسخه هستم
راستی این نسخه توی
Ubuntu 24.04
هم استفاده میشه
📗 #معرفی_کتاب
Python Testing with pytest

🔺کتابی خوب برای تمرین تست نویسی در پایتون

🔎 @py4ds
📗 #معرفی_کتاب
Fluent Python

🔺کتابی خوب برای یادگیری دقیق پایتون

🔎 @py4ds
🤩1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
🐱 گیت چطور کار میکنه ؟

گیت: ابزار کنترل نسخه توزیع‌شده‌ای است که تغییرات اعمال‌شده به کد شما را در طول زمان رصد می‌کند. گیت امکان پیگیری تغییرات به مخزن کد شما را ساده می‌کند و امکان همکاری در پروژه‌ها با دیگران را فراهم می‌کند. این ابزار توسط لینوس توروالدز در سال ۲۰۰۵ برای توسعه کرنل لینوکس ایجاد شد، و سایر توسعه‌دهندگان کرنل به توسعه اولیه آن کمک کردند.

این امکان را به ما می‌دهد که تغییرات را در کد خود ردیابی کرده و با همکاران به صورت توزیع‌شده در قسمت‌های مختلفی از مخزن کد کار کنیم. هنگامی که از توزیع‌شده بودن صحبت می‌کنیم، ممکن است فکر کنیم که کد ما در دو مکان، یعنی سرور از راه دور و محلی، وجود دارد، اما داستان کمی پیچیده‌تر است.

گیت سه فضای ذخیره‌سازی دارد: دایرکتوری کاری، محیط استیجینگ و مخزن محلی.

1. 𝗪𝗼𝗿𝗸𝗶𝗻𝗴 𝗗𝗶𝗿𝗲𝗰𝘁𝗼𝗿𝘆:
اینجا جایی است که کار می‌کنید و فایل‌های شما زندگی می‌کنند (همچنین "بدون پیگیری" نیز نامیده می‌شوند). تمام تغییرات فایل‌ها در اینجا علامت‌گذاری خواهند شد؛ اگر به گیت ذخیره نشوند، آنها را از دست خواهید داد. دلیل این امر این است که گیت از این فایل‌ها آگاه نیست.

2. 𝗦𝘁𝗮𝗴𝗶𝗻𝗴 𝗔𝗿𝗲𝗮:
وقتی تغییرات خود را با دستور git add ذخیره می‌کنید، گیت شروع به پیگیری و ذخیره تغییرات شما با فایل‌ها می‌کند. این تغییرات در دایرکتوری .git ذخیره می‌شوند. سپس، فایل‌ها از دایرکتوری کاری به محیط استیجینگ منتقل می‌شوند. با این حال، اگر این فایل‌ها را تغییر دهید، گیت از آنها خبر نخواهد داشت؛ شما باید به گیت اعلام کنید که این تغییرات را توجه کند.

3. 𝗟𝗼𝗰𝗮𝗹 𝗥𝗲𝗽𝗼𝘀𝗶𝘁𝗼𝗿𝘆:
اینجاست که همه چیز (کمیت‌ها) در دایرکتوری .git ذخیره می‌شود. وقتی می‌خواهید فایل‌های خود را از محیط استیجینگ به مخزن محلی انتقال دهید، می‌توانید از دستور git commit استفاده کنید. پس از این کار، محیط استیجینگ شما خالی خواهد شد. اگر بخواهید ببینید چه چیزی در مخزن محلی وجود دارد، دستور git log را امتحان کنید.

بعضی از دستورات اصلی گیت عبارتند از:

- git init: ایجاد یک مخزن جدید گیت در دایرکتوری
- git branch: ایجاد یک شاخه محلی جدید
- git checkout: تغییر شاخه‌ها
- git add: افزودن یک فایل جدید به محیط استیجینگ
- git commit: افزودن تغییرات استیجینگ شده به مخزن محلی
- git pull: برداشتن کد از مخزن از راه دور به دایرکتوری محلی
- git push: ارسال تغییرات مخزن محلی به مخزن از راه دور
- git status: نمایش فایل‌هایی که در حال پیگیری هستند (و غیرپیگیری شده‌اند)
- git diff: مشاهده تفاوت‌های واقعی در کد بین دایرکتوری کاری و محیط استیجینگ

.
@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
👀 نگاهی به چند نوع معماری توسعه نرم افزار :‌


همانطور که از ساختار مونولوتیک به N-tier و سپس به میکروسرویس‌ها حرکت می‌کنیم، برخی چیزها را به دست می‌آوریم و برخی دیگر را از دست می‌دهیم.

بیایید امروز به بررسی سه سبک مهم معماری بپردازیم: مونولوتیک، N-tier و میکروسرویس‌ها -

1. 𝗠𝗼𝗻𝗼𝗹𝗶𝘁𝗵:
- توصیف: معماری مونولوتیک یک برنامه نرم‌افزاری یک‌پله‌ای است که در آن تمام اجزا (رابط کاربری، برنامه سمت سرور، پایگاه داده) در یک کد منبع ترکیب شده‌اند.
- مزایا: سادگی، آسانی در توسعه، آزمایش و استقرار. مناسب برای برنامه‌های کوچک با ویژگی‌ها و اجزا کمتر.
- معایب: مشکل در مقیاس‌پذیری، چرخش‌های انتشار کند، خطر شکست کامل سیستم به دلیل خرابی یک جزء، اتصال محکم اجزا باعث می‌شود تغییرات بدون تأثیر بر سایر بخش‌ها دشوارتر باشد.

2. 𝗡-𝘁𝗶𝗲𝗿:
- توصیف: معماری N-tier یک برنامه را به چندین لایه (یا لایه‌ها) تقسیم می‌کند که مسئولیت‌های خاصی را اداره می‌کنند، مانند ارائه (رابط کاربری)، منطق کسب و کار (لایه برنامه) و ذخیره داده (لایه پایگاه داده). هر لایه می‌تواند بر روی یک سرور جداگانه اجرا شود.
- مزایا: جداسازی بهتر از نگرانی‌ها، آسانی در مقیاس‌پذیری و حفظ لایه‌های جداگانه، انعطاف در انتخاب فناوری برای هر لایه.
- معایب: پیچیدگی بیشتر از مونولوتیک، نیاز به هماهنگی خوب بین لایه‌ها، ممکن است منجر به محدودیت‌های عملکردی شود اگر به درستی طراحی نشوند.

3. 𝗠𝗶𝗰𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀:
- توصیف: معماری میکروسرویس‌ها یک برنامه را به خدمات کوچک و در جریان از هم جدا شده تقسیم می‌کند، هرکدام مسئولیتی خاص در کسب و کار دارند. این خدمات می‌توانند به طور مستقل توسعه، استقرار و مقیاس‌پذیری یابند.
- مزایا: قابلیت مقیاس‌پذیری، انعطاف، آسانی در حفظ و به‌روزرسانی خدمات خاص، امکان چرخش‌های انتشار سریع‌تر، امکان استفاده از فناوری‌های مختلف برای خدمات مختلف.
- معایب: پیچیدگی در مدیریت خدمات چندگانه، تأخیر در شبکه، نیاز به هماهنگی و نظارت قوی بر خدمات، احتمال عدم انطباق داده به دلیل ذخیره داده‌های توزیع‌شده.

انتخاب معماری به عوامل مختلفی مانند اندازه و پیچیدگی برنامه، اندازه تیم، مجموعه فناوری و نیازهای مقیاس‌پذیری بستگی دارد.

مونولوتیک ها آسان‌تر در توسعه هستند اما در مقیاس‌پذیری دشوارتر هستند، در حالی که میکروسرویس‌ها امکان مقیاس‌پذیری و انعطاف را ارائه می‌دهند اما با پیچیدگی افزایش می‌یابند.

معماری N-tier تاریخچه‌ای در دنیای توسعه نرم‌افزار دارد و قبل از ظهور میکروسرویس‌ها بسیار محبوب بود.

معماری N-tier در میانه قرار دارد، جداسازی بهتر از نگرانی‌ها و مقیاس‌پذیری نسبت به مونولوتیک را ارائه می‌دهد در حالی که کم‌پیچیده‌تر از میکروسرویس‌ها است.

⚠️ نکته مهم : انتخاب تکنولوژی کاملا به پروژه شما بستگی دارد و نمیشه گفت همیشه فلان معماری مناسب تره

.
@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
😱1
🖤 اربعین حسینی تسلیت باد.
🔎 @py4ds
۲۵۶ ُ‌مین روز سال، روز برنامه‌نویس مبارک. 🧑‍💻

🔎 @py4ds
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
پایتون ۳.۱۲ اومده برید نصب کنید صفا کنید. احتمالا مشکل خاصی توی آپگرید پروداکشن ها به این نسخه نداشته باشیم

به طور کلی توی خیلی از قسمت ها افزایش پروفورمنس داشته. مثلا توی async سرعت چند برابر شده . یا توی slice کردن یک دیتای باینری میشه از مموری ویو استفاده کرد و فضای رم اشغال نشه با هر slice و باز هم یکسری تغییرات بوده روی تایپینگ ها و سینتکس جنریک متد ها شکیل تر شده. اررور های سینتکسی توضیحات بهتری دارن و fstring ها بهبود داشتن و مشکلاتی و محدودیت هایی که داشتن برطرف شده. ایشونم itertools یک متد جدید اضاف کرده batched که چیز جالبیه و مثلا یک دیتا دارید میخواید سه تا سه تا جدا بشه تهش دوتا باقی میمونه. خیلی شیک جدا میکنه براتون.یکسری بهبود ها روی عملیات sum بوده

یک چیزی هم توی c-api اضافه کردن ولی توی پایتون گفتن ورژن بعدی میاریمش 😐😂 اینطوریه که شما میتونیدخیلی بهتر از core های cpu استفاده کنید توی پروسس هاتون و هر پروسس میتونه یک gil جداگانه داشته باشه.

توضیحات کامل :
https://docs.python.org/3.12/whatsnew/3.12.html
💠 @SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
Python for Data Science
🔺 اولین گام از مقایسه امکانات جدید پایتون 3.11 مقایسه در عملکرد اون هست. 🔹این نسخه از پایتون با استفاده از پروژه‌ی Faster CPython سرعت خیلی بهتری نسبت به نسخه قبل پیدا کرده(البته در مجموع بنیاد پایتون از نسخه 3.8 به بعد تمرکز اصلی خودش رو روی بهبود عملکرد…
🔺 اولین گام از مقایسه امکانات جدید پایتون 3.12 مقایسه در عملکرد اون هست.
🔹این نسخه از پایتون بر پیاده سازی تغییراتی که روی GIL (Global Interpreter Lock) تمرکز کرده.

👨‍💻تصویر بالا نمونه‌ای از مقایسه عملکرد پایتون 3.12 با 3.11 هست که با استفاده از این پروژه‌ انجامش دادم.
توی پروژه فوق می‌تونید با در نظر گرفتن یه سری نکته هر نسخه‌ای رو با نسخه دیگه مقایسه کنید!

📊نتیجه‌ی این مقایسه بهبود خاصی رو نشون نمیده البته همونطور که در تصویر می‌بینید بعضی ماژولها بیش از ۲ برابر بهبود عملکرد دارن!

#py312

🔎 @py4ds