Python Hints
#Quick من این اخطار هارو همیشه زودتر به دوستان نزدیکم میگم گفتم ازین به بعد بعضیهاش رو اینجا هم بگم: اولین : asyncio رو هرچه زودتر یاد بگیرید، پترنها و مفاهیم برنامهنویسی Async, Parallel, Concurent قبلتر تأکید زیادی روش نداشتم، اما دیر نیست (توی…
بعد از این پست، چندتا دوره آموزش
Async programming
برام فرستادید، بعضی موارد حتی از طرف افراد معروفی هست که متأسفانه وقتی ۱-۲ مورد رو نگاه کردم متوجه شدم کلاهبرداری هست
من بهترین منبع رو توی کانال گذاشتم : کتابی که بالاتر هست.
اما برای اینکه متوجه بشید دوره درست هست یا خیر؛
به زبان ساده :
ما بطور کلی ۲ نوع مشکل میتونیم داشته باشیم که کدهامون سرعت اجرا کندی داشته باشند :
۱- CPU bound
۲- I/O bound
مورد اول : وقتایی هست که شما پردازش خیلی زیادی داری، کد معطل خوندن دیتا از هارد، یاد دانلود دیتا و ... نیست و فقط و فقط خود پردازش کردن دادهها هست که داره زمان زیادی میگیره، به فرض اینکه کد بخوبی زده شده و تا حد خوبی اپتیمایز شده برای این نوع مسائل باید برید سراغ کتابخانه:
multiprocessing
مورد دوم : غیر از بچههای
Data science, data engineering
اکثر مواقع شما مشکلی که دارید روی این بخش هست، همونطور که میدونید پردازش CPU بسیار سریعتر از بخشهای
I/O : Input / Output
هست، یعنی شما توی کسری از ثانیه محاسبات رو روی ۱ هسته از CPU های لپتاپ یا سیستمتون انجام میدید ولی خوندن دیتا از هارد، رم یا حتی وقتی دارید
Crawler
مینویسید دانلود اون صفحه توسط پکیج requests هست که خیلی زمانبر هست نه پیدا کردن چندتا تگ توی html اون صفحه؛ هرچیزی غیر از CPU بمحض درگیر شدن کدهارو
I/O bound
میکنه، ولی خب به نسبت پردازش بهش نگاه میکنیم اگر از پردازش وقت بیشتری بگیره کدهای شما
I/O Blocking
هستند اگر از پردازش وقت کمتری بگیره کدهای شما
CPU Blocking
برای همین خیلی وقتا
Multiprocessing, Multithreading
توی پایتون، بهبود سرعتی که نمیده هیچ اجرا رو کندتر هم میکنه (این چیزی هست که زیاد میشنوم و میفهمم طرفم حتی مفاهیم ساده علوم کامپیوتر رو هم نمیدونه و خودش رو برنامهنویس میدونه)
برای تسکهای I/O blocking باید از
asyncio
استفاده کنید، اما صرف نوشتن
async, await
هیچ اتفاقی نمیوفته (اینو میلیاردها بار توی کدهای
A wait
ی ذره صبر کنیم تا جواب این خط کد بیاد بعد ادامه میدیم، و همینجوری کیلویی استفاده کردنش هیچ کمکی نمیکنه
از طرف دیگه کتابخونهای که توی پروژه
Async
استفاده میشه هم مهم هست، مثلاً برای ارسال درخواست روی web دیگه نمیتونید از requests استفاده کنید باید اون کتابخونه هم async رو پشتیبانی کنه مثلاً بعنوان جایگزین
HttpX, aiohttp
با این مطلب میتونید خیلی وقتا متوجه بشید ی دوره آموزش
asyncio
کلاهبرداری هست یا واقعی (چون خیلی از آدمهای بسیار معروف توی دنیای پایتون رو دیدم، که asyncio رو اشتباه تدریس میکنند.)
ولی بازم منبع اصلی کتابی هست که آخر پیامهای پین شده گذاشتم برای
Async
Async programming
برام فرستادید، بعضی موارد حتی از طرف افراد معروفی هست که متأسفانه وقتی ۱-۲ مورد رو نگاه کردم متوجه شدم کلاهبرداری هست
من بهترین منبع رو توی کانال گذاشتم : کتابی که بالاتر هست.
اما برای اینکه متوجه بشید دوره درست هست یا خیر؛
به زبان ساده :
ما بطور کلی ۲ نوع مشکل میتونیم داشته باشیم که کدهامون سرعت اجرا کندی داشته باشند :
۱- CPU bound
۲- I/O bound
مورد اول : وقتایی هست که شما پردازش خیلی زیادی داری، کد معطل خوندن دیتا از هارد، یاد دانلود دیتا و ... نیست و فقط و فقط خود پردازش کردن دادهها هست که داره زمان زیادی میگیره، به فرض اینکه کد بخوبی زده شده و تا حد خوبی اپتیمایز شده برای این نوع مسائل باید برید سراغ کتابخانه:
multiprocessing
مورد دوم : غیر از بچههای
Data science, data engineering
اکثر مواقع شما مشکلی که دارید روی این بخش هست، همونطور که میدونید پردازش CPU بسیار سریعتر از بخشهای
I/O : Input / Output
هست، یعنی شما توی کسری از ثانیه محاسبات رو روی ۱ هسته از CPU های لپتاپ یا سیستمتون انجام میدید ولی خوندن دیتا از هارد، رم یا حتی وقتی دارید
Crawler
مینویسید دانلود اون صفحه توسط پکیج requests هست که خیلی زمانبر هست نه پیدا کردن چندتا تگ توی html اون صفحه؛ هرچیزی غیر از CPU بمحض درگیر شدن کدهارو
I/O bound
میکنه، ولی خب به نسبت پردازش بهش نگاه میکنیم اگر از پردازش وقت بیشتری بگیره کدهای شما
I/O Blocking
هستند اگر از پردازش وقت کمتری بگیره کدهای شما
CPU Blocking
برای همین خیلی وقتا
Multiprocessing, Multithreading
توی پایتون، بهبود سرعتی که نمیده هیچ اجرا رو کندتر هم میکنه (این چیزی هست که زیاد میشنوم و میفهمم طرفم حتی مفاهیم ساده علوم کامپیوتر رو هم نمیدونه و خودش رو برنامهنویس میدونه)
برای تسکهای I/O blocking باید از
asyncio
استفاده کنید، اما صرف نوشتن
async, await
هیچ اتفاقی نمیوفته (اینو میلیاردها بار توی کدهای
fastApi
میبینید) await اصلا از خود کلمهاش مشخص هست (من همیشه اینطوری درس میدادم)A wait
ی ذره صبر کنیم تا جواب این خط کد بیاد بعد ادامه میدیم، و همینجوری کیلویی استفاده کردنش هیچ کمکی نمیکنه
از طرف دیگه کتابخونهای که توی پروژه
Async
استفاده میشه هم مهم هست، مثلاً برای ارسال درخواست روی web دیگه نمیتونید از requests استفاده کنید باید اون کتابخونه هم async رو پشتیبانی کنه مثلاً بعنوان جایگزین
HttpX, aiohttp
با این مطلب میتونید خیلی وقتا متوجه بشید ی دوره آموزش
asyncio
کلاهبرداری هست یا واقعی (چون خیلی از آدمهای بسیار معروف توی دنیای پایتون رو دیدم، که asyncio رو اشتباه تدریس میکنند.)
ولی بازم منبع اصلی کتابی هست که آخر پیامهای پین شده گذاشتم برای
Async
👍54👏6❤2☃1⚡1👌1
✍23👍6❤3🤪3
اینو همهی سرمایهگذارهای پروژه و کد توی ایران حتما باید ببینند :
برای دولوپرهای عزیز هم قبل از اینکه جوگیر بشید و بگید میخوام شرکت بزنم این رو ببینید (این بررسی فقط از جنبههای توسعه نرمافزار هست باقیش هیج)
https://www.youtube.com/watch?v=Dl-BdxNRUqs
برای دولوپرهای عزیز هم قبل از اینکه جوگیر بشید و بگید میخوام شرکت بزنم این رو ببینید (این بررسی فقط از جنبههای توسعه نرمافزار هست باقیش هیج)
https://www.youtube.com/watch?v=Dl-BdxNRUqs
YouTube
What does larger scale software development look like?
📘 T3 Stack Tutorial: https://1017897100294.gumroad.com/l/jipjfm
🤖 SaaS I'm Building: https://www.icongeneratorai.com/
✂️ Background Cutter: https://www.backgroundcutter.com/
💬 Discord: https://discord.gg/4kGbBaa
🔔 Newsletter: https://newsletter.webdevcody.com/…
🤖 SaaS I'm Building: https://www.icongeneratorai.com/
✂️ Background Cutter: https://www.backgroundcutter.com/
💬 Discord: https://discord.gg/4kGbBaa
🔔 Newsletter: https://newsletter.webdevcody.com/…
👍22👎2
این جمله خیلی خیلی درسته
و هرکسی هم توی این جایگاه نیست که بتونه درست قضاوت کنه راجب نیاز به یک تکنولوژی
صرف اینکه گوگل؛ فیسبوک و … دارند ازش استفاده می کنند دلیل خوبی نیست که شما هم ازش استفاده کنید و اگر دلیلتون برای انتخاب یک تکنولوژی فقط همین هست احتمال بسیار زیاد توی این مسیر اشتباهات زیادی داشتید.
و هرکسی هم توی این جایگاه نیست که بتونه درست قضاوت کنه راجب نیاز به یک تکنولوژی
صرف اینکه گوگل؛ فیسبوک و … دارند ازش استفاده می کنند دلیل خوبی نیست که شما هم ازش استفاده کنید و اگر دلیلتون برای انتخاب یک تکنولوژی فقط همین هست احتمال بسیار زیاد توی این مسیر اشتباهات زیادی داشتید.
👏27👍9👎2🤔2
توی یکی از ارائههای این هفته به کارآموزها گفتم بهونه نیارید، منتور خوب نداشتم، پروژه خوب دستم نیوفتاد و ... بهونه هست
حتی زمان ما هم به نوعی بهونه بود، بودنش خوب بود ولی وقتی نبود هم میشد پیشرفت کرد فقط کند میشدیم من کلاً نداشتم منتور و ...
Self taught
کامل هستم (خطا هم داشتم ولی خب)
الان که بهونه ۱۰۰٪ هست، با توجه به وجود
chatGpt, ...
چراکه bing داره GPT 4 رو به رایگان بهتون دسترسی میده :
https://t.iss.one/pytens/1278
چطوری میشه ازین ابزار برای یادگیری و تقویت برنامهنویسی استفاده کرد ؟!
پست بعدی ...
حتی زمان ما هم به نوعی بهونه بود، بودنش خوب بود ولی وقتی نبود هم میشد پیشرفت کرد فقط کند میشدیم من کلاً نداشتم منتور و ...
Self taught
کامل هستم (خطا هم داشتم ولی خب)
الان که بهونه ۱۰۰٪ هست، با توجه به وجود
chatGpt, ...
چراکه bing داره GPT 4 رو به رایگان بهتون دسترسی میده :
https://t.iss.one/pytens/1278
چطوری میشه ازین ابزار برای یادگیری و تقویت برنامهنویسی استفاده کرد ؟!
پست بعدی ...
Telegram
دستاوردهای یادگیری عمیق(InTec)
Gpt 4
نسخه رایگان روی آپدیت جدید bing هست،
دقیقاً هم خود Gpt 4 هست، اگر نمیتونید نسخه پولی رو بگیرید
Bing On PlayStore
برای آیفون هم وجود داره فقط دقت کنید توسعه دهنده باید
Microsoft corporation
باشه نه کسی دیگه
کافیه ی شبیهساز یا ... روی سیستم…
نسخه رایگان روی آپدیت جدید bing هست،
دقیقاً هم خود Gpt 4 هست، اگر نمیتونید نسخه پولی رو بگیرید
Bing On PlayStore
برای آیفون هم وجود داره فقط دقت کنید توسعه دهنده باید
Microsoft corporation
باشه نه کسی دیگه
کافیه ی شبیهساز یا ... روی سیستم…
👍13❤3👎1
نحوه استفاده از هوش مصنوعی؛ چندتا از بچه ها بعد از ارائه پیام دادند که یک آموزش از اینکه چطوری با
AI
الگوریتم و … رو یاد بگیریم بذارید
گفتم این نمونه رو بذارم.
برعکس این هم هست؛ زمانی که شما یک الگوریتم رو میشناسید ولی مثال برنامه نویسی ازش ندیدید؛
کافیه بگید براتون مثال بزنه یا چندتا چالش ازون مبحث براتون مطرح کنه تا کد بزنید.
خلاصه که بهونه نیارید؛ پیشنهاد ویژه میکنم از نسخه bing استفاده کنید حتما چون هم بهتون پیشنهاد و نمونه
prompt
میده و هم رفرنس نمایش میده که مطمئن تر از خود
chatGPT
حتما هم رو حالت
more precise
بذاریدش
@PyHints
AI
الگوریتم و … رو یاد بگیریم بذارید
گفتم این نمونه رو بذارم.
برعکس این هم هست؛ زمانی که شما یک الگوریتم رو میشناسید ولی مثال برنامه نویسی ازش ندیدید؛
کافیه بگید براتون مثال بزنه یا چندتا چالش ازون مبحث براتون مطرح کنه تا کد بزنید.
خلاصه که بهونه نیارید؛ پیشنهاد ویژه میکنم از نسخه bing استفاده کنید حتما چون هم بهتون پیشنهاد و نمونه
prompt
میده و هم رفرنس نمایش میده که مطمئن تر از خود
chatGPT
حتما هم رو حالت
more precise
بذاریدش
@PyHints
❤20👍13
profiling
یکی از مهمترین و جذابترین مباحث هست که یک توسعه دهنده باید باهاش آشنا باشه (توی رزومه هم خیلی مهمه اونجایی که شما میگید من ۲۰٪ کدهای قبلی رو اپتیمایز کردم؛ شاید تو خیلی از شرکتهای ایران کیلویی باشه ولی شرکتهای درست و حسابی باید گزارش profiling
رو ارائه بدید)ساده ترین قدم توی پروفایلینگ استفاده از پکیج
timeit
هست؛ توی دیتاساینس هم یکی از BuiltIn Magic
های بسیار مهم IPython
هست.کجا بدرد میخوره؟
وقتی شما بین استفاده از دوتا روش مشکل دارید (ولی این ۲ تا کد معمولا بین ۱-۱۰ خط هست)
۲ تا پارامتر مهم داره؛
۱- کدی هست که میخواید سرعت اجراش رو تست کنید.
۲- تعداد تکرار یا اجرای اون کد هست (مثال بالا ۱۰۰) و چون زمانی که بر میگردونه با تعداد تکرار هست مقدارش رو تقسیم بر تعداد تکرار میکنیم تا میانگین زمان اجرای ۱ بار اون کد بدست بیاد (بر حسب ثانیه)
نکته :هیچوقت تعداد تکرار رو ۱ نذارید تا عدد دقیقتری بدست بیارید.
@PyHints
خروجی کد بالا بین خط ۲۱ تا ۲۴.
👍42❤11✍2⚡2
Python Hints
profiling یکی از مهمترین و جذابترین مباحث هست که یک توسعه دهنده باید باهاش آشنا باشه (توی رزومه هم خیلی مهمه اونجایی که شما میگید من ۲۰٪ کدهای قبلی رو اپتیمایز کردم؛ شاید تو خیلی از شرکتهای ایران کیلویی باشه ولی شرکتهای درست و حسابی باید گزارش profiling…
یادگرفتیم که اگر برای کد کوچیک تو زمان توسعه کد به شک افتادیم
اما دنیا همیشه انقدر قشنگ نیست و خیلی وقتا ما ی دولوپری هستیم که قراره
من جزو اون دسته از افرادی هستم که ترجیح میدم
کجا استفاده کنیم ؟
وقتی میخواید ببینید توی اسکریپت کلا چه خبره یا شک دارید آیا همین اسکریپت هست که تبدیل به
گه من ازش میگذرم چون scalene رو میخوام توضیح بدم)
@PyHints
timeit
سریعترین و بیدردسرترین ابزار هست.اما دنیا همیشه انقدر قشنگ نیست و خیلی وقتا ما ی دولوپری هستیم که قراره
shit code
های دیگران رو جم و جور کنید (هرکسی ی اندازه اینکارو میکنه) برای اینکار ابزار بهتری وجود داره به اسم cProfile
همینجا بگم که از ماژول profile
استفاده نکنید (این ابزار متعلقات پایتونی داره و زمان رو دقیق نمیده) مگر اینکه درحال توسعه یک پروفایلر جدید هستید.من جزو اون دسته از افرادی هستم که ترجیح میدم
cProfile
رو داخل کدهام وارد نکنم و بجاش از کامند استفاده کنم تا مجبور نشم اسکریپتهام رو تغییر بدم و ... (اگر شما import cProfile
رو میخواید داکیومنتش رو بخونید؛ خیلی سادهاس نگران نباشید) کجا استفاده کنیم ؟
وقتی میخواید ببینید توی اسکریپت کلا چه خبره یا شک دارید آیا همین اسکریپت هست که تبدیل به
bottleneck
شده یا نه (همینجا اضافه کنم برای نمایش گرافیکی هم ابزاری داریم به اسم snakeviz
گه من ازش میگذرم چون scalene رو میخوام توضیح بدم)
@PyHints
👍41⚡3❤2✍2🆒2
قبل از اینکه خروجی
همیشه و تحت همه شرایط؛ خروجی Profiling رو ذخیره کنید اونم ۲ بار :
۱- قبل از اینکه کدی رو تغییر بدید (همیشه هم به اسمی ذخیره کنید که یادتون بمونه + تاریخ)
۲- بعد از اینکه تغییرات رو اعمال کردید (اسم تغییرات + تاریخ یا
شاید شما ندونید برای چی ذخیره میکنیم ولی ی روزی نجاتتون میده.
برای گرفتن خروجی بالا توی ترمینال این دستور رو اجرا میکنیم با توجه به این نکته که اسکریپت مثال (توی عکس قبلی رو به اسم
cProfile
رو تفسیر کنم میخوام مهمترین نکته توی زندگیتون موقع استفاده از ابزارهای profiling
رو بگم.همیشه و تحت همه شرایط؛ خروجی Profiling رو ذخیره کنید اونم ۲ بار :
۱- قبل از اینکه کدی رو تغییر بدید (همیشه هم به اسمی ذخیره کنید که یادتون بمونه + تاریخ)
۲- بعد از اینکه تغییرات رو اعمال کردید (اسم تغییرات + تاریخ یا
git commit
)شاید شما ندونید برای چی ذخیره میکنیم ولی ی روزی نجاتتون میده.
برای گرفتن خروجی بالا توی ترمینال این دستور رو اجرا میکنیم با توجه به این نکته که اسکریپت مثال (توی عکس قبلی رو به اسم
example.py
ذخیره کردیم)python -m cProfile -s cumulative example.py
و درصورتی که بخوایم خروجی رو ذخیره کنیم که برای آنالیزش از snakeviz, pstats
استفاده بشه و مهمتر از همه داکیومنتش کرده باشیم میتونیم از دستور python -m cProfile -s cumulative -o compare_bubble_vs_builtin_sort_$(date +'%Y_%m_%dT%H_%M_%S').prof example.py
استفاده کنیم؛ حتما پسوند رو .prof
بذارید که راحت شناسایی بشه.✍26👍19👌3⚡2
Python Hints
قبل از اینکه خروجی cProfile رو تفسیر کنم میخوام مهمترین نکته توی زندگیتون موقع استفاده از ابزارهای profiling رو بگم. همیشه و تحت همه شرایط؛ خروجی Profiling رو ذخیره کنید اونم ۲ بار : ۱- قبل از اینکه کدی رو تغییر بدید (همیشه هم به اسمی ذخیره کنید که یادتون…
توی دستور بالا :
تفسیر خروجیش هم خیلی سادهتر از اون چیزی هست که فکر میکنید فقط چندتا نکته داره :
وقتی دوتا عدد هست مثل خط اول خروجی توی عکس قبلی
عدد کوچیکتر تعداد فراخوانی غیر بازگشتی یا
مجموع زمان مورد نیاز از لحظه فراخونی اون خط یا تابع تا خروج از اون خط یا تابع + زمان مورد نیاز برای اجرای توایعی که داخل این تابع یا خط فراخوانی شدند + زمان اجرا بصورت
اسم اسکریپت : شماره خطی که اون کد اجرا شده (اسم تابع)
اسم تابع برای شرایطی مهم هست که داخل تابع اصلی توابع دیگری هم فراخوانی بشه
توی خروجی بالا مواردی مثل
@PyHints
همینجا بگم که تصویر قبلی خروجی کامل
-m:
برای استفاده از یک ماژول خاص استفاده میشه-s:
ترتیب نمایش هست که گفتیم بر اساس cumulative time
باشه همیشه هم همین رو استفاده خواهید کرد-o:
برای اینکه خروجی رو توی یک فایل بریزه و توی ترمینال نمایش نده (اول در تاریخ ثبت میکنیم بعد ی بار هم بدون این option
برای راحتی خودمون اجرا میکنیم)تفسیر خروجیش هم خیلی سادهتر از اون چیزی هست که فکر میکنید فقط چندتا نکته داره :
ncalls:
تعداد فراخوانی اون خط از کد (ستون آخر کمی جلوتر توضیح میدم دقیق)وقتی دوتا عدد هست مثل خط اول خروجی توی عکس قبلی
3/1
:عدد کوچیکتر تعداد فراخوانی غیر بازگشتی یا
primitive
هست و عدد بزرگتر تعداد کل فراخوانی به هر شکلی که بوده (بازگشتی و غیر بازگشتی و ...) یعنی بصورت کلی اون builtin method
توی مثال قبل ۳ بار فراخوانی شده.tottime:
مجموع زمان مورد نیاز جهت اجرای اون تایع؛ به غیر از زمان اجرای توابعی که داخل این تابع فراخوانی شدهاند.percall:
زمان اجرای مورد نیاز برای هربار اجرای اون خط یا اون تابع معمولا حدودی برابر هست با :tottime / ncalls
cumtime:
مهمترین ستون همینه و اون مرتب سازی که توی دستور انجام دادیم (منظورم s cumulative-
هست) بر اساس همین ستون بود.مجموع زمان مورد نیاز از لحظه فراخونی اون خط یا تابع تا خروج از اون خط یا تابع + زمان مورد نیاز برای اجرای توایعی که داخل این تابع یا خط فراخوانی شدند + زمان اجرا بصورت
recursive , ...
خلاصه همه چیز اینجاس و از همه ستونها هم دقیقتر هست filename:lineno(function)
اینم که بسیار واضح هست از سمت چپ به راست :اسم اسکریپت : شماره خطی که اون کد اجرا شده (اسم تابع)
اسم تابع برای شرایطی مهم هست که داخل تابع اصلی توابع دیگری هم فراخوانی بشه
توی خروجی بالا مواردی مثل
builtin.exec
(از توابع مورد علاقه من هست اصن ی وضعی) و برخی موارد دیگر برای import random
هست @PyHints
همینجا بگم که تصویر قبلی خروجی کامل
cProfile
نیست و بنده این خروجی رو بریدم تا خواناتر باشه👍40❤14⚡3✍2👎2
lineprofiler, memory profiler, scalene (all in one gpu include)
بماند برای روزهای بعدی (روی هرکدوم از موارد که دوست داشتید reaction بزنید ممنون)
بماند برای روزهای بعدی (روی هرکدوم از موارد که دوست داشتید reaction بزنید ممنون)
👍50❤18⚡3☃2🤪2
Python Hints
LinkedIn URL این کد بصورت آموزشی و async هست باقی مطلب رو روی لینکدین بخونید ...
چندتا از دوستان پیام دادند که چرا از لینکدین پست میذارید و ...
همرو همینجا بذارید (خلاصه که میگن بین پلتفرمهای مختلف جابجا نکنید مارو)
پست لینکدین جنبه دستاوردی داره
پستهای کانال جنبه آموزشی داره
برای همین از هم جدا شون میکنم، توی پست بالا هم اگر دقت کنید و متن رو بخونید، یکسری مواردی رو گفتم که شما بعنوان برنامهنویس پایتون میتونید کد بزنید و تست کنید.
مطمئن باشید توی مسیر انجام اون موارد بسیار بسیار مطلب مهم یاد خواهید گرفت، و به همین دلیل هم لینک از لینکدین قرار دادم.
همرو همینجا بذارید (خلاصه که میگن بین پلتفرمهای مختلف جابجا نکنید مارو)
پست لینکدین جنبه دستاوردی داره
پستهای کانال جنبه آموزشی داره
برای همین از هم جدا شون میکنم، توی پست بالا هم اگر دقت کنید و متن رو بخونید، یکسری مواردی رو گفتم که شما بعنوان برنامهنویس پایتون میتونید کد بزنید و تست کنید.
مطمئن باشید توی مسیر انجام اون موارد بسیار بسیار مطلب مهم یاد خواهید گرفت، و به همین دلیل هم لینک از لینکدین قرار دادم.
👍26❤3🤪3👏2⚡1🙏1🍓1
این ۶ خط کد (البته نه همهاش و فقط خط ۶ام) توی ی پروژه خیلی بزرگ ۲ هفتهاس که مارو درگیر کرده بود و امروز وسط یک کار دیگر به راه حل رسیدم.
اینو جدی میگم که هیچکس؛ نتونسته بود مشکل رو پیدا کنه (حتی گروه مشاورین)
@PyHints
ادامه پست بعدی:
اینو جدی میگم که هیچکس؛ نتونسته بود مشکل رو پیدا کنه (حتی گروه مشاورین)
@PyHints
ادامه پست بعدی:
✍9🤪4🤷♂2👍2⚡1
Python Hints
این ۶ خط کد (البته نه همهاش و فقط خط ۶ام) توی ی پروژه خیلی بزرگ ۲ هفتهاس که مارو درگیر کرده بود و امروز وسط یک کار دیگر به راه حل رسیدم. اینو جدی میگم که هیچکس؛ نتونسته بود مشکل رو پیدا کنه (حتی گروه مشاورین) @PyHints ادامه پست بعدی:
نمیتونم مثال پروژه رو بدون اینکه کل شرایط رو بگم توضیح بدم اما سعی میکنم اونقدر توضیحاتم مفید باشه که اگر بهش برخوردید سریع متوجه بشید.
داستان ازین قرار هست که همهی ما؛ وقتی میخوایم تعداد
ما تقریبا شرایطی مشابه بالا داشتیم و همین باعث میشد نتونیم باگ رو پیدا کنیم (سیستم توسعه و تست تمام
اما روی سرور اصلی اینطور نبوده : استفاده از
برای بررسی بیشتر به داکیومنت
stackoverflow
@PyHints
پ.ن :
داستان ازین قرار هست که همهی ما؛ وقتی میخوایم تعداد
cpu core
رو توی کدهای پایتون بدست بیاریم از os.cpu_count
استفاده میکنیم (همینجا بگم که توی همین تحقیقات متوجه شدم این مورد تعداد hyper thread
رو بر میگردونه) os.cpu_count
تعداد کل core
یا بهتر بگم hyper thread
های در اختیار سیستمعامل رو برمیگردونه؛ اما شرایطی رو فرض کنید که شما حق استفاده از کل core
های سیستم رو ندارید؛ تعداد pool
ایی که برای multiprocess
در نظر میگیرید بهم میریزه و سیستم توی زمان peak
به فنا میره درحالی که روی سرور تست مطمئن بودید این تعداد یوزر رو باید جواب بده.ما تقریبا شرایطی مشابه بالا داشتیم و همین باعث میشد نتونیم باگ رو پیدا کنیم (سیستم توسعه و تست تمام
core
ها در اختیار python
هست)اما روی سرور اصلی اینطور نبوده : استفاده از
pid = os.getpid()
len(os.sched_getaffinity(pid))
راه حلی بود که مشکل مارو حل کرد.os.sched_getaffinity
تعداد core
هایی که یک پروسس خاص میتونه در اختیار داشته باشه رو برمیگردونه.برای بررسی بیشتر به داکیومنت
CPython
, لینک زیر مراجعه کنیدstackoverflow
@PyHints
پ.ن :
99.9
% شرایط از همون os.cpu_count
استفاده خواهیم کرد اما خب ما اینجا راجب مباحث ساده و عادی صحبت نمیکنیم 😁😎.Stack Overflow
os.sched_getaffinity(0) vs os.cpu_count()
So, I know the difference between the two methods in the title, but not the practical implications.
From what I understand: If you use more NUM_WORKERS than are cores actually available, you face big
From what I understand: If you use more NUM_WORKERS than are cores actually available, you face big
👏29👍14🤔3🤪3⚡1
Python Hints
LinkedIn URL این کد بصورت آموزشی و async هست باقی مطلب رو روی لینکدین بخونید ...
توی این کد یکی از مواردی که چندین بار ازم پرسیده شده این بخش کد هست :
چیزی که پر واضح هست اینه که به متنهایی که توی ترمینال print میشه رنگ میده (میدونم کلی پکیج آماده هست ولی خب استفاده از اونها جنبه آموزش رو از بین میبرد)
بطور کلی برای در اختیار گرفتن اتفاقاتی که توی ترمینال میوفته از کدهای
میتونیم استفاده کنیم.
نه تنها برای رنگ، بلکه برای جابجایی
نشان دهنده این هست که ما میخوایم ازین کدها استفاده کنیم و اصطلاحاً بهش
گفته میشه.
اگر اسکریپت نویسی با پایتون رو بیشتر از
انجام میدید، بهتره با این موارد آشنا باشید شاید
چیزی که پر واضح هست اینه که به متنهایی که توی ترمینال print میشه رنگ میده (میدونم کلی پکیج آماده هست ولی خب استفاده از اونها جنبه آموزش رو از بین میبرد)
بطور کلی برای در اختیار گرفتن اتفاقاتی که توی ترمینال میوفته از کدهای
ANSI escape
میتونیم استفاده کنیم.
نه تنها برای رنگ، بلکه برای جابجایی
cursor
، تغییر متن داخل ترمینال و پیادهسازی حالتی مثل scroll
و ... استفاده میشه\033[
نشان دهنده این هست که ما میخوایم ازین کدها استفاده کنیم و اصطلاحاً بهش
control sequence introducer
گفته میشه.
اگر اسکریپت نویسی با پایتون رو بیشتر از
Jupyter notebook, ...
انجام میدید، بهتره با این موارد آشنا باشید شاید
vim
بعدی رو شما نوشتید.👍21❤6👎2🌚2☃1
#Quick
از پایتون درست استفاده کنید.
دلیل این اختلاف زمانی و حافظه رو دوستان به خوبی توی کامنتها توضیح دادند پس دیگه من صحبت نمیکنم راجبش.
اما غیر از مورد اول :
که بهینه ترین حالت محاسبات و استفاده درست از numpy هست (وقتی میخواهید روی آرایه قبلی بنویسید) باقی موارد هر ۲ باعث خطا و terminate شدن کولب شدند.
شاید فکر کنید ۱ میلیارد عدد بزرگی هست :
۱- بستگی به موضوع داره ولی توی دنیای فعلی خیر واقعاً بزرگ نیست
۲- مدل
۳-
رو همیشه باید توی بدترین حالات محاسبه کرد (برای همین Big O رو یاد گرفتیم)
از پایتون درست استفاده کنید.
دلیل این اختلاف زمانی و حافظه رو دوستان به خوبی توی کامنتها توضیح دادند پس دیگه من صحبت نمیکنم راجبش.
اما غیر از مورد اول :
x1 *= 2
که بهینه ترین حالت محاسبات و استفاده درست از numpy هست (وقتی میخواهید روی آرایه قبلی بنویسید) باقی موارد هر ۲ باعث خطا و terminate شدن کولب شدند.
شاید فکر کنید ۱ میلیارد عدد بزرگی هست :
۱- بستگی به موضوع داره ولی توی دنیای فعلی خیر واقعاً بزرگ نیست
۲- مدل
LLAMA 2
(تلفظ : لاما) که چندروز پیش توسط meta
معرفی شد کوچکترینش 7 میلیارد و بزرگترینش 70 میلیارد پارامتر داره.۳-
performance
رو همیشه باید توی بدترین حالات محاسبه کرد (برای همین Big O رو یاد گرفتیم)
❤🔥29👍20🤪5✍3👎2⚡1❤1👏1💘1
یکبار برای همیشه :
اگر کسی با من، طرز بیان من و ... مشکلی داره
میتونه از گروه - کانال
Left
بده، و حتماً من رو هم
Block
بکنه.
واسه درآمد زایی کانال نزدم، واسه دیده شدن هم نیازی به این کانال ندارم (چون اصلاً پروژه تو ایران قبول نمیکنم)
ولی راجب این موضوعات دیگه پیام ندید؛ ترجیح میدم کانال و گروه حتی ۴۰ نفر باشه اما آدمهای درست (که حتی خودمم ازشون یاد بگیرم)
پ.ن : این رو میگم، چون ترجیح میدم بجای اینکه انرژیام رو صرف آدمهای زبون نفهم و دنبال حاشیه کنم ، جواب سوالات کسایی که واقعاً نیاز به کمک دارند رو بدم. ( چون خودمم ی روزی توی این جایگاه بودم و افراد کمی رو برای کمک گرفتن کنارم داشتم)
اگر کسی با من، طرز بیان من و ... مشکلی داره
میتونه از گروه - کانال
Left
بده، و حتماً من رو هم
Block
بکنه.
واسه درآمد زایی کانال نزدم، واسه دیده شدن هم نیازی به این کانال ندارم (چون اصلاً پروژه تو ایران قبول نمیکنم)
ولی راجب این موضوعات دیگه پیام ندید؛ ترجیح میدم کانال و گروه حتی ۴۰ نفر باشه اما آدمهای درست (که حتی خودمم ازشون یاد بگیرم)
پ.ن : این رو میگم، چون ترجیح میدم بجای اینکه انرژیام رو صرف آدمهای زبون نفهم و دنبال حاشیه کنم ، جواب سوالات کسایی که واقعاً نیاز به کمک دارند رو بدم. ( چون خودمم ی روزی توی این جایگاه بودم و افراد کمی رو برای کمک گرفتن کنارم داشتم)
👍90❤19👎11🤪6🤔4🌚2🆒2
Python Hints
#Quick از پایتون درست استفاده کنید. دلیل این اختلاف زمانی و حافظه رو دوستان به خوبی توی کامنتها توضیح دادند پس دیگه من صحبت نمیکنم راجبش. اما غیر از مورد اول : x1 *= 2 که بهینه ترین حالت محاسبات و استفاده درست از numpy هست (وقتی میخواهید روی آرایه…
#موقت
این پست ی باگ و سوتی داره که متأسفانه کسی متوجه نشد
و خودم الان متوجه شدم و باید بهش اعتراف کنم.
البته بحثی که شده در مورد سرعت و مصرف حافظه کاملاً درست هست ولی خب کد اشتباه داره
تصویر و متن آپدیت میشه
مشکل رو ازینجا پیدا کردم که اون
Online Interpreter
قطعاً نباید توانایی محاسبه
100,000,000
رو میداشت (دیشب فکر میکردم روی 10,000 گذاشتم، تاثیرات شایعه حذف ۴ صفر از پول هست.)
این پست ی باگ و سوتی داره که متأسفانه کسی متوجه نشد
و خودم الان متوجه شدم و باید بهش اعتراف کنم.
البته بحثی که شده در مورد سرعت و مصرف حافظه کاملاً درست هست ولی خب کد اشتباه داره
تصویر و متن آپدیت میشه
مشکل رو ازینجا پیدا کردم که اون
Online Interpreter
قطعاً نباید توانایی محاسبه
100,000,000
رو میداشت (دیشب فکر میکردم روی 10,000 گذاشتم، تاثیرات شایعه حذف ۴ صفر از پول هست.)
👍14👌2😐2👀2👾2⚡1
1690891967408.gif
849.4 KB
این پکیج هم جالب هست،
Pypi Link
البته شخصاً فعلاً کاربرد جدیایی براش نمیبینم (ویدئو گویا هست دیگه)
وسط اجرا یادت میوفته ی کاری رو نکردی همون لحظه اضافه میکنی
احتمال زیاد پرفورمنس رو خراب میکنه
منبع: لینکدین (پروفایل طرف رو گم کردم)
پ.ن : یک کاربرد
Checkpoint
زدن توی تنسورفلو - کراس - پایتورچ میتونه باشه ولی موافقش نیستم
اگر یادت هست که اینو بذاری تو for loop پس قطعاً میدونی برای checkpoint زدن هست، خب کد رو همونجا آپدیت میکنی 😬
واقعاً شخصاً هنوز کاربرد منطقی براش نمیبینم
Pypi Link
البته شخصاً فعلاً کاربرد جدیایی براش نمیبینم (ویدئو گویا هست دیگه)
وسط اجرا یادت میوفته ی کاری رو نکردی همون لحظه اضافه میکنی
احتمال زیاد پرفورمنس رو خراب میکنه
منبع: لینکدین (پروفایل طرف رو گم کردم)
پ.ن : یک کاربرد
Checkpoint
زدن توی تنسورفلو - کراس - پایتورچ میتونه باشه ولی موافقش نیستم
اگر یادت هست که اینو بذاری تو for loop پس قطعاً میدونی برای checkpoint زدن هست، خب کد رو همونجا آپدیت میکنی 😬
واقعاً شخصاً هنوز کاربرد منطقی براش نمیبینم
👍21⚡2