Coding Lovers pinned «🌐 آدرس خانواده کدینگ لاورز توی فضای مجازی: 🌐 YouTube 🌐 Telegram 🌐 Instagram 🌐 GitHub ❤️ حمایت مالی: ❤️ Support ❤️ حمایت معنوی: ❤️ Share posts :)»
لایبرری MarkupEver جایگزین BeautifulSoup!
لایبرری MarkupEver یه لایبرری خفن برای برای خوندن، تجزیه و حتی ایجاد یک HTML یا XML است که با زبان Rust نوشته شده تا سرعت رو درکنار کیفیت حفظ کنه.
گیتهاب:
https://github.com/awolverp/markupever
داکیومنت:
https://awolverp.github.io/markupever
پ.ن: این چندوقت که نبودم درگیر همین بودم، استار یادتون نره 🥹
@CodingLovers_OFF 🔥
لایبرری MarkupEver یه لایبرری خفن برای برای خوندن، تجزیه و حتی ایجاد یک HTML یا XML است که با زبان Rust نوشته شده تا سرعت رو درکنار کیفیت حفظ کنه.
گیتهاب:
https://github.com/awolverp/markupever
داکیومنت:
https://awolverp.github.io/markupever
پ.ن: این چندوقت که نبودم درگیر همین بودم، استار یادتون نره 🥹
@CodingLovers_OFF 🔥
👍11❤6🔥4
دوباره اومدم بگم: وقتشه selenium هم بزاری کنار 😔😂
با لایبرری playwright ( مال مایکروسافت هستش ) مقایسهش کنیم:
خوبی های playwright:
- کنترل بشدت کامل و راحتی بهت میده و هرکاری که فکرشو بکنی میتونی انجام بدی
- حالت async هم پشتیبانی میکنه
- خیلی خیلی سریعتر از سلنیوم هستش
- مموری کمتری مصرف میکنه
بدی های playwright:
- روی لینوکس های هم خانوادهی آرچ کار نمیکنه ( مثل مانجارو )
- مستقیماً با مرورگر های سیستمتون کار نمیکنه بلکه ماجرای خاص خودشو داره
خوبی های سلنیوم:
- با مرورگر های روی سیستمتون کار میکنه
- کامیونیتی خیلی بزرگتری داره
- لایبرری های کاربردی زیادی ازش استفاده کردن
- نصب و استفادش راحت تره
بدی های سلنیوم:
- خیلی کند
- اصلا دسترسی کاملی به مرورگر نمیده و دهنت سرویس میشه تا مثلا با localStorage کار کنی
@CodingLovers_OFF 🔥
با لایبرری playwright ( مال مایکروسافت هستش ) مقایسهش کنیم:
خوبی های playwright:
- کنترل بشدت کامل و راحتی بهت میده و هرکاری که فکرشو بکنی میتونی انجام بدی
- حالت async هم پشتیبانی میکنه
- خیلی خیلی سریعتر از سلنیوم هستش
- مموری کمتری مصرف میکنه
بدی های playwright:
- روی لینوکس های هم خانوادهی آرچ کار نمیکنه ( مثل مانجارو )
- مستقیماً با مرورگر های سیستمتون کار نمیکنه بلکه ماجرای خاص خودشو داره
from playwright.sync_api import sync_playwright
def run(playwright):
chromium = playwright.chromium # or "firefox" or "webkit".
browser = chromium.launch()
page = browser.new_page()
page.goto("https://example.com")
# other actions...
browser.close()
with sync_playwright() as playwright:
run(playwright)
خوبی های سلنیوم:
- با مرورگر های روی سیستمتون کار میکنه
- کامیونیتی خیلی بزرگتری داره
- لایبرری های کاربردی زیادی ازش استفاده کردن
- نصب و استفادش راحت تره
بدی های سلنیوم:
- خیلی کند
- اصلا دسترسی کاملی به مرورگر نمیده و دهنت سرویس میشه تا مثلا با localStorage کار کنی
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.python.org")
# other actions ...
driver.close()
@CodingLovers_OFF 🔥
👍15❤2🔥2
لغات غلط - ربات یا بات تلگرام؟!
خیلی وقته که از اصطلاحات نادرست و بیمعنی برای اشاره به باتها استفاده میشه. فکر کردم بهتره یه توضیح مختصر بدیم تا این اصطلاحات رو درست کنیم و از همون واژههای استاندارد استفاده کنیم.
1️⃣ ربات یا بات؟
- خیلیها میگن «ربات»! ولی در واقع این کلمه اشتباهه.
- ربات به موجوداتی با بدن فیزیکی گفته میشه (مثل رباتهای کارخانهها).
- بات (Bot) به برنامههای نرمافزاری گفته میشه که کارهای خاصی رو انجام میدن.
پس دیگه از این به بعد به جای «ربات تلگرام» بگیم بات تلگرام! ✅
2️⃣ بات CLI ؟ بات سلف؟
این اسمها نه تنها استاندارد نیستن، بلکه اصلاً معنی خاصی ندارن!
اسم درستش یوزربات (Userbot) هست. یوزرباتها باتهایی هستن که روی اکانت شخصی کاربر ران میشن و کارهایی رو انجام میدن.
پس دیگه از این به بعد به جای اونا بگیم یوزربات! ✅
3️⃣ بات API؟
این هم غلطه، البته که از اون لغات عجیب غریب قابل درک تره :)
پروتوکل MTProto هم یه API هست و تلگرام خودش داکیومنتش رو منتشر کرده.
پس دلیلی نداره که به باتهای ساختهشده با botfather بگیم «بات API».
اسم درستش بات هست! ✅ همین. پسوند و پیشوندی نداره.
پ.ن: این پست رو دوستمون @sajiminer ساخته ❤️، من فقط ادیتش زدم; این مطلب رو شِیر کنین تا این لغات تصحیح بشن ...
@CodingLovers_OFF 🔥
خیلی وقته که از اصطلاحات نادرست و بیمعنی برای اشاره به باتها استفاده میشه. فکر کردم بهتره یه توضیح مختصر بدیم تا این اصطلاحات رو درست کنیم و از همون واژههای استاندارد استفاده کنیم.
1️⃣ ربات یا بات؟
- خیلیها میگن «ربات»! ولی در واقع این کلمه اشتباهه.
- ربات به موجوداتی با بدن فیزیکی گفته میشه (مثل رباتهای کارخانهها).
- بات (Bot) به برنامههای نرمافزاری گفته میشه که کارهای خاصی رو انجام میدن.
پس دیگه از این به بعد به جای «ربات تلگرام» بگیم بات تلگرام! ✅
2️⃣ بات CLI ؟ بات سلف؟
این اسمها نه تنها استاندارد نیستن، بلکه اصلاً معنی خاصی ندارن!
اسم درستش یوزربات (Userbot) هست. یوزرباتها باتهایی هستن که روی اکانت شخصی کاربر ران میشن و کارهایی رو انجام میدن.
پس دیگه از این به بعد به جای اونا بگیم یوزربات! ✅
3️⃣ بات API؟
این هم غلطه، البته که از اون لغات عجیب غریب قابل درک تره :)
پروتوکل MTProto هم یه API هست و تلگرام خودش داکیومنتش رو منتشر کرده.
پس دلیلی نداره که به باتهای ساختهشده با botfather بگیم «بات API».
اسم درستش بات هست! ✅ همین. پسوند و پیشوندی نداره.
پ.ن: این پست رو دوستمون @sajiminer ساخته ❤️، من فقط ادیتش زدم; این مطلب رو شِیر کنین تا این لغات تصحیح بشن ...
@CodingLovers_OFF 🔥
👍22❤4👎4🔥2
عید نوروز تون پیشاپیش مبارک، امیدوارم سال خوبی در پیش باشه 🥳
امیدوارم سال جدید براتون پر از کامیتهای بدون باگ، دیپلویهای موفق و پروژههایی باشه که نیاز به ریفکتور ندارن!😁
#NowruzMubarak
💜 @CodingLovers_OFF 💛
امیدوارم سال جدید براتون پر از کامیتهای بدون باگ، دیپلویهای موفق و پروژههایی باشه که نیاز به ریفکتور ندارن!
#NowruzMubarak
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍2🔥1
👍12❤4🔥3🤣1
جنگو 5.2 منتشر شد 🎉
دیروز این نسخه جدید از جنگو منتشر شده که پر از تغییرات بوده.
بعضی از تغییرات مهمش عبارتند از:
✅ فیلد جدید CompositePrimaryKey برای دیتابیس
✅ قابلیت شخصی سازیه بیشتر فرم ها
✅ اضافه شدن کلی تابع async به بهش auth
✅ کلی بهبود توی دیتابیس، فرم ها، HttpResponse و HttpRequest داشتیم
✅ کلی متود جدید async توی QuerySet اضافه شده
و کلی تغییرات دیگه ...
https://docs.djangoproject.com/en/5.2/releases/5.2/
@CodingLovers_OFF 🔥
دیروز این نسخه جدید از جنگو منتشر شده که پر از تغییرات بوده.
بعضی از تغییرات مهمش عبارتند از:
✅ فیلد جدید CompositePrimaryKey برای دیتابیس
✅ قابلیت شخصی سازیه بیشتر فرم ها
✅ اضافه شدن کلی تابع async به بهش auth
✅ کلی بهبود توی دیتابیس، فرم ها، HttpResponse و HttpRequest داشتیم
✅ کلی متود جدید async توی QuerySet اضافه شده
و کلی تغییرات دیگه ...
https://docs.djangoproject.com/en/5.2/releases/5.2/
@CodingLovers_OFF 🔥
🔥9❤2👍1
یکی از ماژول های built in پایتون که مخصوصا برای برنامه های CLI خیلی بدرد میخوره رو اینجا نشونتون دادم 🤗
https://youtube.com/shorts/GUBT7wgqE1Q?si=QCcGgo1TVYSZyU6n
https://youtube.com/shorts/GUBT7wgqE1Q?si=QCcGgo1TVYSZyU6n
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
با این ترفند پایتون، از پسورد کاربر محافظت کن
ماژول getpass پایتون
❤13👍2🔥2👎1
Refactoring UI.pdf
53.1 MB
کتاب Refactoring UI
یه منبع فوق العاده از نکاتی برای طراحی UI که سازنده ی TailwindCSS طراحی کرده در سال 2021.
کسایی که دنبال اصول و نکات دیزاین هستن براشون این کتاب فوق العادست ...
چند تا از سرفصل هاش:
- Start with a feature, not a layout
- Grids are overrated
- Shadows can have two parts
حقیقتا خیلی خفنه و باید همشو بخونم 🙌🏻
🔖 Source
🔥 @CodingLovers_OFF
یه منبع فوق العاده از نکاتی برای طراحی UI که سازنده ی TailwindCSS طراحی کرده در سال 2021.
کسایی که دنبال اصول و نکات دیزاین هستن براشون این کتاب فوق العادست ...
چند تا از سرفصل هاش:
- Start with a feature, not a layout
- Grids are overrated
- Shadows can have two parts
حقیقتا خیلی خفنه و باید همشو بخونم 🙌🏻
🔖 Source
🔥 @CodingLovers_OFF
👍9❤2
Forwarded from BotNews
Bot API 9.0
Announcing the largest Bot API update of 2025 (so far😈 )
🏪 Telegram Business 2.0
• Bots can now fully customize the branding of Business Accounts – managing their name, username, bio and profile pictures.
• Introduced support for managing Paid Gifts🎁 , including conversions, transfers and upgrades.
• Bots can now check⭐️ Telegram Star balances and transfer Stars from managed businesses.
• Bots can now easily mark Business messages as read or delete them.
• Added extensive support for managing stories on Business accounts – featuring photos, videos and interactive elements like links, locations, reactions, weather info and even Gifts.
• All stories posted by bots can also be edited or deleted.
• Introduced granular Business permissions, giving users even finer control over connected bots.
🗃️ Mini App Storage
• Mini Apps can now store data locally on the user's device.
• Sensitive tokens can be safely persisted in a specialized secure storage.
🎁 Telegram Gifts
• Introduced support for unique Gifts – with detailed model, symbol and backdrop info.
• Bots can also check which Gift types are accepted by users and chats.
⭐️ Paid Messages
• Bots can now track how many Stars users paid to send a message.
• This includes out-of-the-box support for paid messages in both groups and business accounts.
⭐️ Telegram Premium
• Bots can now gift a Telegram Premium subscription paid in Stars.
• And more, see the full changelog for details:
https://core.telegram.org/bots/api-changelog#april-11-2025
Announcing the largest Bot API update of 2025 (so far
• Bots can now fully customize the branding of Business Accounts – managing their name, username, bio and profile pictures.
• Introduced support for managing Paid Gifts
• Bots can now check
• Bots can now easily mark Business messages as read or delete them.
• Added extensive support for managing stories on Business accounts – featuring photos, videos and interactive elements like links, locations, reactions, weather info and even Gifts.
• All stories posted by bots can also be edited or deleted.
• Introduced granular Business permissions, giving users even finer control over connected bots.
• Mini Apps can now store data locally on the user's device.
• Sensitive tokens can be safely persisted in a specialized secure storage.
• Introduced support for unique Gifts – with detailed model, symbol and backdrop info.
• Bots can also check which Gift types are accepted by users and chats.
• Bots can now track how many Stars users paid to send a message.
• This includes out-of-the-box support for paid messages in both groups and business accounts.
• Bots can now gift a Telegram Premium subscription paid in Stars.
• And more, see the full changelog for details:
https://core.telegram.org/bots/api-changelog#april-11-2025
Please open Telegram to view this post
VIEW IN TELEGRAM
BotNews
Bots can now fully customize the branding of Business Accounts – managing their name, username, bio and profile pictures.
یعنی به جای یوزربات، از این به بعد با بات هم میشه ساعت روی اسم گذاشت؟ 😂
😁10👍2🤣2
میخوام فردا درباره یچیزی پست بزارم
با یک سوال شروع میکنم
بنظرتون ممکنه یک آرایه از میلیارد ها آیتم داشته باشیم، ولی هیچ مموریی استفاده نشده باشه ؟!
پ.ن: داخل پایتون که اصلا نمیشه، به پایتون فکر نکنین
با یک سوال شروع میکنم
بنظرتون ممکنه یک آرایه از میلیارد ها آیتم داشته باشیم، ولی هیچ مموریی استفاده نشده باشه ؟!
پ.ن: داخل پایتون که اصلا نمیشه، به پایتون فکر نکنین
👍8
Coding Lovers
میخوام فردا درباره یچیزی پست بزارم با یک سوال شروع میکنم بنظرتون ممکنه یک آرایه از میلیارد ها آیتم داشته باشیم، ولی هیچ مموریی استفاده نشده باشه ؟! پ.ن: داخل پایتون که اصلا نمیشه، به پایتون فکر نکنین
اینقدر استقبال شد خواستم الان بزارم 😂❤️
🔥 ساختار ZST در Rust
برخلاف تمام زبان ها، راست ساختاری داره به اسم Zero Sized Type.
یعنی تایپی که هیچ حافظه ای نمیگیره!
راست تمام مرز هارا جابجا میکند😂💣
به این شکل تعریف میشه:
این تایپ هیچ حافظه ای نمیگیره! حتی اگه ازش میلیارد ها بار داخل آرایه استفاده کنیم، هیچ حافظه ای نمیگیره.
زبان Rust گارانتی میکند که ZSTها را بدون مصرف حافظه مدیریت میکند.
چجوری این اتفاق میوفته؟ 🤔
این موضوع کمی ضد شهود به نظر میرسد، اما جواب آن به طراحی هوشمندانه کامپایلر Rust برمیگردد.
وقتی میگوییم ZST حافظه مصرف نمیکند، یعنی هیچ بایت حافظهای در مموری برای آن رزرو نمیشود.
در این کد متغیر
پس اطلاعاتش کجاست؟ 😐
کامپایلر Rust بهصورت استاتیک (در زمان کامپایل) متوجه میشود که این یک ZST است و:
- هر جا به متغیر
- حتی اگر ادرس مموری از آن گرفته شود، کامپایلر یک آدرس سمبلیک (غیرواقعی) میسازد، اما در باینری نهایی، این آدرس به هیچ حافظه فیزیکی اشاره نمیکند.
- این آرایه Vec، یک میلیون آیتم دارد، اما:
- هیچ حافظهای برای عناصرش مصرف نشده
- فقط ساختار مدیریتی Vec (مثل طول و ظرفیت) حافظه مصرف میکند.
پ.ن: درکش یکم سخته ولی خیلی جالبه
مثل تخیل کردن میمونه. تخیل کردنِ چیزی که وجود نداره 🤔😂
🔥 @CodingLovers_OFF
🔥 ساختار ZST در Rust
برخلاف تمام زبان ها، راست ساختاری داره به اسم Zero Sized Type.
یعنی تایپی که هیچ حافظه ای نمیگیره!
راست تمام مرز هارا جابجا میکند😂💣
به این شکل تعریف میشه:
struct Empty;
این تایپ هیچ حافظه ای نمیگیره! حتی اگه ازش میلیارد ها بار داخل آرایه استفاده کنیم، هیچ حافظه ای نمیگیره.
زبان Rust گارانتی میکند که ZSTها را بدون مصرف حافظه مدیریت میکند.
چجوری این اتفاق میوفته؟ 🤔
این موضوع کمی ضد شهود به نظر میرسد، اما جواب آن به طراحی هوشمندانه کامپایلر Rust برمیگردد.
وقتی میگوییم ZST حافظه مصرف نمیکند، یعنی هیچ بایت حافظهای در مموری برای آن رزرو نمیشود.
let x = Empty;
در این کد متغیر
x وجود دارد (از نظر معنایی در کد)، اما هیچ جایی در حافظه برای آن اختصاص داده نمیشود.پس اطلاعاتش کجاست؟ 😐
کامپایلر Rust بهصورت استاتیک (در زمان کامپایل) متوجه میشود که این یک ZST است و:
- هر جا به متغیر
x اشاره شود، مستقیماً مقداری خالی را جایگزین میکند. ( مقدار () )- حتی اگر ادرس مموری از آن گرفته شود، کامپایلر یک آدرس سمبلیک (غیرواقعی) میسازد، اما در باینری نهایی، این آدرس به هیچ حافظه فیزیکی اشاره نمیکند.
let v: Vec<Empty> = vec![Empty; 1_000_000];
- این آرایه Vec، یک میلیون آیتم دارد، اما:
- هیچ حافظهای برای عناصرش مصرف نشده
- فقط ساختار مدیریتی Vec (مثل طول و ظرفیت) حافظه مصرف میکند.
پ.ن: درکش یکم سخته ولی خیلی جالبه
مثل تخیل کردن میمونه. تخیل کردنِ چیزی که وجود نداره 🤔😂
🔥 @CodingLovers_OFF
🔥10❤1👍1
Coding Lovers
اینقدر استقبال شد خواستم الان بزارم 😂❤️ 🔥 ساختار ZST در Rust برخلاف تمام زبان ها، راست ساختاری داره به اسم Zero Sized Type. یعنی تایپی که هیچ حافظه ای نمیگیره! راست تمام مرز هارا جابجا میکند😂💣 به این شکل تعریف میشه: struct Empty; این تایپ هیچ حافظه ای نمیگیره!…
میتونید Enumیی را داخل پایتون تصور کنید که هیچ مموریی مصرف نمیکنه؟
دقیقا ZST ها داخل Rust همین قابلیت رو دارن. میتونیم با این قابلیت Enum هایی بسازیم که هیچ مموری مصرف نمیکنند.
این Enum هرجایی استفاده بشه هیچ مموری مصرف نمیکنه و اینجوری بشدت توی بهینه سازی کمک میکنه ...
البته این تنها کاربردش نیست، کلی کاربرد دیگه داره که در این مُقال نمیگنجه
دقیقا ZST ها داخل Rust همین قابلیت رو دارن. میتونیم با این قابلیت Enum هایی بسازیم که هیچ مموری مصرف نمیکنند.
enum Enum {
Variant1,
Variant2,
}این Enum هرجایی استفاده بشه هیچ مموری مصرف نمیکنه و اینجوری بشدت توی بهینه سازی کمک میکنه ...
البته این تنها کاربردش نیست، کلی کاربرد دیگه داره که در این مُقال نمیگنجه
👍7
تاحالا از docker یا kubernetes استفاده کردین داخل پروژه هاتون؟
👎28👍14
داشتم دنبال یه ادیتور سبک تر و راحت تر از vscode میگشتم؛ برخوردم به یه ادیتور تازه به اسم Zed
سازنده های Atom دارن طراحیش میکنن. هنوز کامل نشده و درواقع نسخه preview دادن بیرون.
نکته جالب ماجرا اینه که کاملا از صفره صفر دارن با Rust مینویسن بدون هیچ فریم وورک خارجی!!!
1️⃣ کل فریم وورک رابط گرافیکیشون رو خودشون با Rust به اسم gpui ساختن ( منظورم چیزی شبیه به pyqt )
2️⃣ مثل vscode از اکستنشن های مختلف ( ساخت خودشون ) استفاده میکنه
3️⃣ سرعتش بشدت بشدت بالاست
4️⃣ محیطی بین vim و vscode رو داره
5️⃣ هوش مصنوعیش همه جا کمکت میکنه
💔 متاسفانه هنوز کامل نیست و پر از باگه، اما بشدت بهش امیدوارم که بشه بهترین ادیتور ... چون حتی دنبال ساخت هوش مصنوعیعه مخصوص ادیتورشون هستن
https://zed.dev
سازنده های Atom دارن طراحیش میکنن. هنوز کامل نشده و درواقع نسخه preview دادن بیرون.
نکته جالب ماجرا اینه که کاملا از صفره صفر دارن با Rust مینویسن بدون هیچ فریم وورک خارجی!!!
1️⃣ کل فریم وورک رابط گرافیکیشون رو خودشون با Rust به اسم gpui ساختن ( منظورم چیزی شبیه به pyqt )
2️⃣ مثل vscode از اکستنشن های مختلف ( ساخت خودشون ) استفاده میکنه
3️⃣ سرعتش بشدت بشدت بالاست
4️⃣ محیطی بین vim و vscode رو داره
5️⃣ هوش مصنوعیش همه جا کمکت میکنه
💔 متاسفانه هنوز کامل نیست و پر از باگه، اما بشدت بهش امیدوارم که بشه بهترین ادیتور ... چون حتی دنبال ساخت هوش مصنوعیعه مخصوص ادیتورشون هستن
https://zed.dev
❤12🔥5🤣2
❓توی بحث همزمانی در پایتون، تاحالا دنبال چیزی سریع تر و بهینه تر از asyncio گشتین؟
بنظرتون هستش؟
بنظرتون هستش؟
Coding Lovers
❓توی بحث همزمانی در پایتون، تاحالا دنبال چیزی سریع تر و بهینه تر از asyncio گشتین؟ بنظرتون هستش؟
کتابخانه greenlet
این کتابخونه که با C برای پایتون نوشته شده، امکان اجرای همزمان چند تابع را به ما میدهد که برخلاف threading از مکانیزم cooperative multitasking استفاده میکند.
🤔 یعنی چی خب نفهمیدم!
خلاصه یعنی اینکه کاملا مشابه asyncio با تسک کار میکنه و از امثال threading استفاده نمیکنه.
💣 فرق های مهم آن با asyncio و threading:
- مموری بیشتری از asyncio مصرف میکنه ( تقریبا ۲۰ کیلوبایت در برابر ۵ کیلوبایت )
- بشدت بشدت سریع تر از asyncio عمل میکنه ( ۱۰ برابر )
- برخلاف بقیه، مموری جداگانه ای برای تسک ها اختصاص نمیده
- نیاز به async و await نداره
- خیلی سخت تر هستش :/
😵💫 چرا میگم بهینه تره؟
۱۰ برابر سریعتر از asyncio عمل میکنه و در عین حال برای پروژه هایی که از اول async طراحی نشدن خیلی کارآمد هستش
🤝 الان یعنی بریم سراغ greenlet ؟
نه لزوماً. هروقت:
- سرعت پروژت برات مهمه
- قراره کار های همزمان زیادی انجام بدی
- نمیتونی پروژت رو async بنویسی
- تنبل نیستی
جای threading بیا از greenlet استفاده کن ...
وگرنه همون asyncio کفایت میکنه
نمونه کد:
پ.ن: یچی بین asyncio و threading رو فرض کن؛ مثل asyncio سبک و سریع، ولی در عین حال مثل threading به کلمات async و await نیاز نداره
@CodingLovers_OFF 🔥
این کتابخونه که با C برای پایتون نوشته شده، امکان اجرای همزمان چند تابع را به ما میدهد که برخلاف threading از مکانیزم cooperative multitasking استفاده میکند.
🤔 یعنی چی خب نفهمیدم!
خلاصه یعنی اینکه کاملا مشابه asyncio با تسک کار میکنه و از امثال threading استفاده نمیکنه.
💣 فرق های مهم آن با asyncio و threading:
- مموری بیشتری از asyncio مصرف میکنه ( تقریبا ۲۰ کیلوبایت در برابر ۵ کیلوبایت )
- بشدت بشدت سریع تر از asyncio عمل میکنه ( ۱۰ برابر )
- برخلاف بقیه، مموری جداگانه ای برای تسک ها اختصاص نمیده
- نیاز به async و await نداره
- خیلی سخت تر هستش :/
😵💫 چرا میگم بهینه تره؟
۱۰ برابر سریعتر از asyncio عمل میکنه و در عین حال برای پروژه هایی که از اول async طراحی نشدن خیلی کارآمد هستش
🤝 الان یعنی بریم سراغ greenlet ؟
نه لزوماً. هروقت:
- سرعت پروژت برات مهمه
- قراره کار های همزمان زیادی انجام بدی
- نمیتونی پروژت رو async بنویسی
- تنبل نیستی
جای threading بیا از greenlet استفاده کن ...
وگرنه همون asyncio کفایت میکنه
نمونه کد:
from greenlet import greenlet
def test1():
print(12)
gr2.switch()
print(34)
def test2():
print(56)
gr1.switch()
print(78)
gr1 = greenlet(test1)
gr2 = greenlet(test2)
gr1.switch()
# 12
# 56
# 34
پ.ن: یچی بین asyncio و threading رو فرض کن؛ مثل asyncio سبک و سریع، ولی در عین حال مثل threading به کلمات async و await نیاز نداره
@CodingLovers_OFF 🔥
❤7👍2
خب گیتهاب قابلیت سرچ خودشو با هوش مصنوعی کوپایلت ( گیتهاب کوپایلت ) ترکیب کرد
و بخش بد ماجرا، کوپایلت برای ایرانیا هنوز هم تحریمه
اپدیت: دوستان گیتهاب منتظر اعتراض بنده بود؛ از تحریم نصفه و نیمه درومدیم ولی هنوز داخل vscode کار نمیکنه
و بخش بد ماجرا، کوپایلت برای ایرانیا هنوز هم تحریمه
اپدیت: دوستان گیتهاب منتظر اعتراض بنده بود؛ از تحریم نصفه و نیمه درومدیم ولی هنوز داخل vscode کار نمیکنه
🤣15👍5❤1